
- •Разработка web – приложений на php
- •1. Цель работы 8
- •1. Цель работы 12
- •1. Цель работы 18
- •1. Цель работы 26
- •Введение
- •Переменные
- •Константы
- •Использование операций: вычисление итога по форме
- •Закрытие файла.
- •Закрытие файла.
- •Открытие файла
- •Запись в файл
- •Форматы файлов
- •Закрытие файла
- •Считывание из файла
- •Другие полезные файловые функции
- •Численно индексированные массивы
- •Ассоциативные массивы
- •Многомерные массивы
- •Сортировка массивов
- •Сортировка в обратном порядке
- •Сортировка многомерных массивов
- •Изменение порядка следования элементов в массивах
- •Загрузка массивов из файлов
- •Форматирование строк
- •Форматирование строк для представления
- •Объединение и разделение строк с помощью строковых функций
- •Сравнение строк
- •Сопоставление и замена подстрок с помощью строковых функций
- •Поиск строк в строках
- •Определение позиции подстроки
- •Замена подстрок
- •Задание
- •Контрольные вопросы
Объединение и разделение строк с помощью строковых функций
Часто требуется просматривать части строк по отдельности. Например, может потребоваться просмотреть слова в предложении (для проверки правописания) или разделить имя домена и адрес электронной почты. PHP представляет несколько строковых функций и одну функцию регулярного выражения, которые позволяют делать это.
Первая функция explode() имеет следующий прототип:
array explode(string separator, string input);
Эта функция принимает строку input и разделяет ее на части по указанной разделительной строке separator. Части строки возвращаются в виде массива.
Для получения имени домена из адреса электронной почты в сценарии можно использовать следующий код:
$email_array = explode(“@”, $email);
Адрес электронной почты разделяется на две части: имя пользователя, которое сохраняется в $email_array[0] и имя домена, которое сохраняется в $email_array[1]. Теперь можно промерить имя домена для определения источника сообщения клиента и для его переадресации соответствующему лицу:
if ($email_array[1] == “bigcustomer.com”)
$toaddress = bob@bobsdomain.com;
else
$toaddress = feedback@bobsdomain.com;
Если имя домена содержит прописные буквы, то этот подход не будет работать. Этой проблемы можно было избежать, преобразовав все буквы имени домена в прописные или строчные:
$email_array[1] = strtoupper ($email_array[1]);
Для противоположного действия используются функции implode() или join(), которые идентичны. Например,
$new_email = implode(“@”, $email_array);
Эта функция принимает элементы из массива $email_array и объединяет их со строкой, переданной в первом параметре.
В отличие от функции explode(), которая разделяет на части сразу всю строку, функция strtok() получает фрагменты (называемые лексемами) из строки по одному. Прототип функции имеет вид:
string strtok(string input, string separator);
В качестве разделителя separator можно использовать символ или строку символов. Для получения первой лексемы из строки нужно вызвать функцию strtok() со строкой, которую требуется разбить на лексемы, и разделителем. Для получения следующих лексем из строки достаточно передать функции единственный параметр – разделитель. Функция сохраняет собственный внутренний указатель на позицию в строке. Как правило, данная функция используется следующим образом:
$token = strtok($feedback, “ “);
echo $token.”<br>”;
while ($token! = “”)
{
$token = strtok(“ “);
echo $token.”<br>”;
};
При наличии в исходной строке двух следующих подряд разделителей функция будет возвращать пустую строку. Ее нельзя отличить от пустой строки, возвращаемой по достижению конца исходной строки. Кроме того, если одной из лексем является 0, функция также вернет пустую строку. Поэтому чаще лучше просто применять функцию explode().
Следующая функция substr() позволяет получить доступ к подстроке между заданными начальной и конечной позициями строки. Для нашего примера она не подходит, но может оказаться полезной, если требуется разделить на части фиксированные отформатированные строки. Данная функция имеет следующий прототип:
string substr(string строка, int начало, int [длина]);
Давайте рассмотрим примеры использования данной функции:
$test = “Your customer service is excellent”;
Если вызвать ее с положительным числом в качестве параметра начало, мы получим строку, начиная с позиции начало до конца строки. Например, substr($test, 1); возвращает строку “our customer service is excellent”. Нумерация позиций строки начинается с 0, как и в массивах.
substr($test, -9)
возвращает подстроку “excellent”. Параметр длина может использоваться для указания либо количества символов, которые должны быть возвращены (если он положителен), либо последнего символа, возвращаемой последовательности (если он отрицателен).