Иногда бывает нужно разбить одну строку на несколько строк и отправить их в массив. Очень часто такое бывает нужно, когда мы получили набор входных данных в виде одной строки, разделённых, например, пробелами. Более редко (по крайней мере, в моей практике), но тоже используется обратная операция - объединение строк...
Иногда бывает нужно разбить одну строку на несколько строк и отправить их в массив. Очень часто такое бывает нужно, когда мы получили набор входных данных в виде одной строки, разделённых, например, пробелами. Более редко (по крайней мере, в моей практике), но тоже используется обратная операция - объединение строк в PHP. Давайте обсудим эти две задачи более подробно.
Для разбиения строки на элементы используется функция explode(), которая принимает два параметра: строку, которую необходимо разбить и разделитель. Рассмотрим функцию explode() сразу на примере:
<?php
$arr = explode("/", "Lexus/Smirnov/40");
print_r($arr);
?>В данном примере, мы создаём массив, элементами которого становятся "Lexus", "Smirnov", "40". То есть мы, учитывая разделитель "/", разбили эту строку на несколько и записали их в массив. Существует так же и операция разбиение строки на элементы и мгновенная запись их в переменные:
<?php
list($car, $owner, $age) = explode("/", "Lexus/Smirnov/40");
echo $car."<br />";
echo $owner."<br />";
echo $age."<br />";
?>То есть в данном примере, мы создали три переменные, в каждую из которых записали соответствующее значение.
Теперь о применении данной функции. В своё время я реализовывал задачу поиска по сайту. И мне нужно было сформировать из GET-запроса, полученного из формы, запрос к базе данных, чтобы извлечь оттуда подходящие записи. Проблема была в том, что ведь могут искать несколько слов сразу, например, "создать сайт быстро". И нужно вывести все материалы со словами "создать", либо "сайт", либо "быстро". И мне приходилось использовать функцию explode(), а в качестве разделителя брался пробел. А уже затем я формировал запрос к базе данных (разумеется, с количеством OR зависящем от количества слов, либо AND, если пользователь потребовал вхождение всех слов) и извлекал подходящие записи из таблицы базы данных. Вообще, задача была на порядок тяжелее, но тут я привёл Вам её кусок, чтобы Вы поняли, что бывают ситуации, когда без этой функции очень трудно работать.
Для объединения строк в PHP имеется функция implode(), которая принимает тоже два параметра: разделитель и массив:
<?php
$arr = array(15, 10, 1985);
$str = implode(".", $arr);
echo $str;
?>В результате получится строка: "15.10.1985". Думаю, что здесь всё прозрачно.
Скажу честно, я не помню, когда эту функцию использовал (может быть, вообще не использовал), но применение для неё определённо имеется. Например, первое, что приходит в голову - это получить несколько значений, соответствующих, дню рождения пользователя. И чтобы вывести его день рождения в любом формате, можно с помощью функции implode() тут же преобразовать полученные значения в строку (с любым разделителем) и дальше уже выводить только строку, а не соединять каждый раз все значения.
Вот и всё, что касается разбиения и объединения строк в PHP.
