пятница, 21 августа 2009 г.

Разбиение строки на подстроки

В предыдущем посте мы разбирали, как можно соединить элементы массива в одну строку при помощи функции implode(). Теперь же перед нами встала обратная задача: разбить строку на подстроки по указанной строке-разделителю.

Ниже привожу код на PHP с комментариями. Обратите внимание на порядок аргументов в функции explode() - это очень важно.


// исходная строка
$str = 'Один, два, три, четыре, пять';
// передаём в функцию строку-разделитель и исходную строку
$ar = explode(', ', $str);
// выводим массив на экран
// каждую подстроку обрамляем звёздочками
foreach($ar as $v)
{
echo '*'.$v.'*';
}

На экране:

*Один* *два* *три* *четыре* *пять*

Таким образом, сама строка-разделитель никак не попадает на экран, что логично. Также обращаю ваше внимание, что после запятой в строке-разделителе следует пробел. Если убрать пробел и оставить только запятую, то на экране увидим пробел перед каждым словом, кроме первого. Звёздочками я обрамил подстроки как раз для наглядности подобных ситуаций.

*Один* * два* * три* * четыре* * пять*

пятница, 7 августа 2009 г.

Вывод слов через запятую

Довольно распространённая задача, когда у нас имеется массив строк и требуется вывести их на экран, разделяя запятыми. Можно конечно сделать вот так:


// создаём массив строк; в данной случае это все цвета радуги
$ar = array('красный', 'оранжевый', 'жёлтый', 'зелёный', 'голубой', 'синий', 'фиолетовый');
echo 'Все цвета радуги: ';
// проходим по каждому элементу из массива и ставим после него запятую
foreach($ar as $v)
{
echo $v.', ';
}

На выходе получаем следующее:

Все цвета радуги: красный, оранжевый, жёлтый, зелёный, голубой, синий, фиолетовый,

Всё бы ничего, да только запятая в конце мозолит глаз. Надо бы её убрать. А как? Можно, конечно, изгаляться и придумывать сложные алгоритмы, а можно почитать документацию и обнаружить замечательную функцию implode().

Итак, изменим наш код:


// создаём массив строк; в данной случае это все цвета радуги
$ar = array('красный', 'оранжевый', 'жёлтый', 'зелёный', 'голубой', 'синий', 'фиолетовый');
echo 'Все цвета радуги: ';
// передаём в функцию implode() строку-разделитель и наш исходный массив
echo implode(', ', $ar);

Смотрим на результат:

Все цвета радуги: красный, оранжевый, жёлтый, зелёный, голубой, синий, фиолетовый

Теперь нам уже не нужно заботиться о последовательности запятых. Функция всё сделает сама.