Опубликован: 01.03.2005 | Уровень: для всех | Доступ: платный
Лекция 8:

Работа со строками

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >

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

Очень полезные функции – функция разделения строки на части и обратная ей функция объединения строк в одну строку. Почему очень полезные? Например, если вы динамически генерируете форму по желанию пользователя, можно предложить ему вводить элементы для создания списка выбора, разделяя их каким-нибудь символом. И для того чтобы обработать полученный список значений, как раз и пригодится умение разбивать строку на кусочки. Для реализации такого разбиения в PHP можно использовать несколько функций:

explode(разделитель,исходная строка 
    [,максимальное число элементов])
split (шаблон, исходная строка 
    [, максимальное число элементов])
preg_split (шаблон, исходная строка 
    [, максимальное число элементов 
    [,флаги]])

Последние две функции работают с регулярными выражениями, поэтому в данной лекции мы их рассматривать не будем. Рассмотрим более простую функцию – explode() .

Функция explode() делит исходную строку на подстроки, каждая из которых отделена от соседней с помощью указанного разделителя, и возвращает массив полученных строк. Если задан дополнительный параметр максимальное число элементов, то число элементов в массиве будет не больше этого параметра, в последний элемент записывается весь остаток строки. Если в качестве разделителя указана пустая строка """", то функция explode() вернет false. Если символа разделителя в исходной строке нет, то возвращается массив с исходной строкой без изменений.

Пример 8.11. мы хотим создать элемент формы – выпадающий список и значения для этого списка должен ввести пользователь, не знакомый с языком html. Создадим такую форму:

<form action=exp.php>
   Введите варианты для выбора автора статьи
      через двоеточие (":"):<br>
   <input type=text name=author size=40>
   <br>
   <input type=submit value="Создать элемент">
</form>
Пример 8.11. Использование функции explode()

Скрипт, который будет ее обрабатывать (exp.php), может быть таким:

<?php
$str = $_GET["author"];
$names = explode(":",$str); 
    // разбиваем строку введенную,
    // пользователем с помощью ":"
$s = "<select name=author>"; 
    // создаем выпадающий список
foreach ($names as $k => $name) {
   $s .= "<option value=$k>$name"; 
    // добавляем элементы к списку
}
$s .= "</select>";
echo $s;
?>

В итоге, если мы введем такую строчку в форму:

Ввод значений для создания выпадающего списка

Рис. 8.2. Ввод значений для создания выпадающего списка

то получим следующий выпадающий список:

Выпадающий список, полученный       в результате обработки формы

Рис. 8.3. Выпадающий список, полученный в результате обработки формы

Кроме разделения строки на части иногда, наоборот, возникает необходимость объединения нескольких строк в одно целое. Функция, предлагаемая для этого языком PHP, называется implode() :

implode (string $glue , array $pieces)

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

Пример 8.12. Допустим, мы храним имя, фамилию и отчество человека по отдельности, а выводить их на странице нужно вместе. Чтобы соединить их в одну строку, можно использовать функцию implode() :

<?php
$data = array("Иванов","Иван","Иванович");
$str = implode(" ", $data);
echo $str;
?>
Пример 8.12. Использование функции implode()

В результате работы этого скрипта получим строку:

Иванов Иван Иванович

У функции implode() существует псевдонимфункция join(), т.е. эти две функции отличаются лишь именами.

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Данила Некрасов
Данила Некрасов
Россия, Пермь, ПНИПУ
Сергей Федоров
Сергей Федоров
Россия