Оглавление

15.1. Функции для работы со строками

Перечислим основные функции для работы со строками:
□ strlen() возвращает количество символов в строке:

$str = "Строка";
echo strlen($str); // Выведет: 6

 

□ trim() удаляет пробельные символы в начале и конце строки. Пробельными  символами  считаются:  пробел,  символ перевода  строки (\n),  символ возврата каретки (\r), символы  горизонтальной (\t) и вертикально (\v) табуляции и символ конца строки (\0):

$str = ' Строка ';
$str = trim($str);
echo "'$str'"; // Выведет: 'Строка'


□ ltrim() удаляет пробельные символы в начале строки:

$str = ' Строка ';
$str = ltrim($str);
echo "'$str'"; // Выведет: 'Строка '


□ rtrim() удаляет пробельные символы в конце строки:

$str = ' Строка ';
$str = rtrim($str);
echo "'$str'"; // Выведет: ' Строка'

 

□ chop() удаляет пробельные символы в конце строки:

$str = ' Строка ';
$str = chop($str);
echo "'$str'"; // Выведет: ' Строка'


□ strip_tags() удаляет из строки все HTML-теги, за исключением указанных во втором параметре:

$str = '<span style="color: red"><b>Строка</b></span>';
$str1 = strip_tags($str);
$str2 = strip_tags($str, '<b>');
echo $str1 . '<br>'; // Выведет: Строка<br>
echo $str2; // Выведет: <b>Строка</b>


Следует  заметить,  что  функция  strip_tags()  работает  не  совсем  корректно. Если в строке встретится открывающая угловая скобка ("<"), а за ней  сразу  другой  символ,  то  будет  удален  весь  фрагмент  от  скобки  до конца строки:

$str = '5<10 Эта строка будет удалена!';
$str1 = strip_tags($str);
echo $str1; // Выведет: 5

□ addslashes() добавляет обратную косую черту для защиты специальных символов:

$str = '"Волга", "Москвич", "Жигули"';
$str = addslashes($str);
echo $str; // Выведет: "Волга", "Москвич", "Жигули"

 

□ stripslashes() удаляет обратные косые черты:

$str = '\"Волга\", \"Москвич\", \"Жигули\"';
$str = stripslashes($str);
echo $str; // Выведет: "Волга", "Москвич", "Жигули"


□ htmlspecialchars(<Строка>, [<Режим>], [<Кодировка>]) заменяет специальные символы их HTML-эквивалентами. Второй необязательный параметр <Режим>  задает режим преобразования двойных и одинарных кавычек. Может принимать следующие значения:
•  ENT_COMPAT — преобразуются  только  двойные кавычки (значение по
умолчанию);
•  ENT_QUOTES — преобразуются и двойные, и одинарные кавычки;
•  ENT_NOQUOTES — двойные и одинарные кавычки не заменяются:

$str = '"Волга", "Москвич"';
$str = htmlspecialchars($str);
// Для строки в кодировке UTF-8 такое выражение:
// $str = htmlspecialchars($str, ENT_COMPAT, 'UTF-8');
echo $str;
// Выведет: &quot;Волга&quot;, &quot;Москвич&quot;

□ split() разделяет строку на подстроки по указанному разделителю и добавляет их в массив:

$str = "Фамилия\tИмя\tОтчество\tГод рождения";
$Mass = split("\t", $str);
foreach ($Mass as $key) {
   echo $key . '<br>';
} // Выведет: Фамилия<br>Имя<br>Отчество<br>Год рождения<br>


Функция позволяет использовать регулярные выражения.

 

□ explode()  разделяет  строку на подстроки по указанному разделителю и добавляет их в массив. Аналогична функции split(), но регулярных выражений не поддерживает, поэтому работает быстрее:

$str = "Фамилия\tИмя\tОтчество\tГод рождения";
$Mass = explode("\t", $str);
foreach ($Mass as $key) {
   echo $key . '<br>';
} // Выведет: Фамилия<br>Имя<br>Отчество<br>Год рождения<br>


□ substr()  возвращает  подстроку  указанной  длины,  начиная  с  заданной позиции.  Если  длина  не  указана,  то  возвращается  подстрока,  начиная  с заданной позиции и до конца строки. Функция имеет следующий формат:
substr(<Строка>, <Начальная позиция>, [<Длина>]);
Примеры:

$str = "Строка";
$str1 = substr($str, 0, 1);
echo $str1; // Выведет: C
$str2 = substr($str, 1);
echo $str2; // Выведет: трока


□ wordwrap() позволяет разбить длинный текст на строки указанной длины.
Функция имеет следующий формат:
wordwrap(<Строка>, <Количество символов>, <Символ разрыва>);

Например, следующий пример

$str = "Очень длинная строка перед выводом";
echo wordwrap($str, 7, "<br>");


выведет каждое слово на отдельной строчке:
  Очень
  длинная
  строка
  перед
  выводом
nl2br() добавляет перед всеми символами новой строки (\n) тег <br />
(XML-аналог HTML-тега <br>):

$str = "Очень\nдлинная\nстрока\nперед\nвыводом";
echo nl2br($str);


Исходный HTML-код,  выведенный  этим  кодом PHP,  будет  выглядеть следующим образом:
 

Очень<br />
длинная<br />
строка<br />
перед<br />
выводом 

Если во втором параметре указать значение false, то будет добавляться HTML-тег <br>:

$str = "Строка1\nСтрока2";
echo nl2br($str, false);
// Строка1<br>
// Строка2


В окне Web-браузера каждое слово будет отображено на своей строчке;


□ strtoupper()  заменяет  все  символы  строки  соответствующими  прописными буквами:

$str = "очень длинная строка";
setlocale(LC_CTYPE, "ru_RU.CP1251"); // Настройка локали
echo strtoupper($str); // Выведет: ОЧЕНЬ ДЛИННАЯ СТРОКА

 

□ strtolower() заменяет все символы строки соответствующими строчными буквами:

$str = "ОЧЕНЬ длинная строка";
setlocale(LC_CTYPE, "ru_RU.CP1251"); // Настройка локали
echo strtolower($str); // Выведет: очень длинная строка


□ ucfirst() делает первый символ строки прописным:

$str = "очень длинная строка";
setlocale(LC_CTYPE, "ru_RU.CP1251"); // Настройка локали
echo ucfirst($str); // Выведет: Очень длинная строка

 

$str = "очень длинная строка";
setlocale(LC_CTYPE, "ru_RU.CP1251"); // Настройка локали
echo ucwords($str); // Выведет: Очень Длинная Строка
Примечания:
  • Если в файле php.ini директива magic_quotes_gpc имеет значение On, то все входящие данные будут по умолчанию обработаны функцией addslashes(). Как показала практика, вместо пользы эта директива приносит только вред. Если оставить директиву с установленным по умолчанию значением On, то защитные слэши начинают "магическим" образом размножаться. По этой причине при установке и настройке мы изменили значение директивы magic_quotes_gpc на Off. Заботиться о добавлении защитного слэша лучше самим. В PHP 6 директива magic_quotes_gpc полностью удалена.
  • В PHP 5.3 функция split() помечена как устаревшая. Вместо нее следует использовать функцию explode() или preg_split().
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити