PHP-функция: explode

Javascript:

function explode( delimiter, string ) {	// Split a string by string
	// 
	// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// + improved by: kenneth
	// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	var emptyArray = { 0: '' };
	if ( arguments.length != 2
		|| typeof arguments[0] == 'undefined'
		|| typeof arguments[1] == 'undefined' )
	{
		return null;
	}
	if ( delimiter === ''
		|| delimiter === false
		|| delimiter === null )
	{
		return false;
	}
	if ( typeof delimiter == 'function'
		|| typeof delimiter == 'object'
		|| typeof string == 'function'
		|| typeof string == 'object' )
	{
		return emptyArray;
	}
	if ( delimiter === true ) {
		delimiter = '1';
	}
	return string.toString().split ( delimiter.toString() );
}

Примеры:

explode(' ', 'Kevin van Zonneveld');
{0: 'Kevin', 1: 'van', 2: 'Zonneveld'}


Автор: vasa_c, дата: 24 июня, 2008 - 12:19
#permalink

Какой смысл во всех этих бесчисленных проверках?


Автор: Илья Кантор, дата: 3 июля, 2008 - 15:20
#permalink

Насколько я понял, автор постарался сделать поведение функции максимально идентичным php...

Обычно достаточно просто split:

var str = "a,b,c"
str.split(',') // => массив ["a","b","c"]

Автор: alex33, дата: 4 ноября, 2013 - 07:49
#permalink

Обычно достаточно просто split

Согласен.


Автор: Алексей Качаев (не зарегистрирован), дата: 10 декабря, 2008 - 19:32
#permalink

Все эти проверки здесь нужны для того, чтобы в случае некорректного ввода аргументов функция отдавала те же результаты, какие отдает в PHP.


Автор: SviMik (не зарегистрирован), дата: 11 июля, 2011 - 17:56
#permalink

Вы $limit забыли.

array explode ( string $delimiter , string $string [, int $limit ] )

Автор: andrey12323 (не зарегистрирован), дата: 15 марта, 2012 - 11:47
#permalink

Хорошо ты подшутил с limit :-D


Автор: Александриус (не зарегистрирован), дата: 30 мая, 2012 - 18:23
#permalink

С чего ты взял что насчет limit это шутка???


Автор: Гость (не зарегистрирован), дата: 1 октября, 2013 - 18:56
#permalink

Я конечно понимаю, что канонически кошерно создавать аналоги функций и не пользоваться ОО возможностями языков, но кто отменял простое:

var a = "word,of,split";
a.split(",");

Автор: f0ma (не зарегистрирован), дата: 9 июня, 2014 - 13:40
#permalink

вот правильная версия, полностью аналогична пыховой:
function explode(d, s, l)
{
var out=[], tmp, pos;
if (l)
{
tmp = s;
pos = s.indexOf(d)
while(l-1 && pos>=0)
{
out.push(tmp.substr(0, pos));
tmp = tmp.substr(pos+d.length);
l--;
pos = tmp.indexOf(d);
}
out.push(tmp);
}
else
out = s.split(d);
return out;
}


Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum

© Илья Кантор, 2007-2021 О проекте - Обратная связь - Вверх

AltStyle によって変換されたページ (->オリジナル) /