PHP :: Обработка текста
Следует помнить, что в PHP отсутствует встроенная поддержка Unicode, т.е. язык поддерживает только 256 различных символов, каждому из которых соответствует один байт. Поэтому, для работы с многобайтовыми кодировками вроде UTF-8, которая используется нами при верстке веб-страниц, следует отдавать предпочтение специальным функциям и расширениям для работы с многобайтовыми строками. Все они собраны в разделе «Поддержка языков и кодировок» -> «Многобайтовые строки». Что касается функций для работы с однобайтовыми строками, то их нужно искать в разделе «Обработка текста». При этом отметим, что некоторые функции одинаково полезны как для работы с однобайтовыми, так и многобайтовыми строками. Использование некоторых функций для обработки строк показано в примере №1 (не забывайте заглядывать в справочник).
htmlCodes
<?php
echo "----- Несколько примеров из раздела 'Обработка текста' -----<br><br>";
echo '-------- htmlspecialchars() -------- <br><br>';
//При выводе текста из PHP-кода в HTML-код можно использовать функции
//htmlspecialchars() - преобразует специальные символы в HTML-сущности,
//или htmlentities() - преобразует все возможные символы в соответствующие
//HTML-сущности. Для обратного преобразования используются функции
//htmlspecialchars_decode() и html_entity_decode()
//ENT_QUOTES - указывает на преобразование как двойных,
//так и одинарных кавычек
//Выведет '<p>Абзац</p>'
echo htmlspecialchars('<p>Абзац</p>', ENT_QUOTES);
//Выведет строку 'Абзац'
echo "<p>Абзац</p><br>";
echo '-------- nl2br() -------- <br><br>';
//nl2br() удобна при выводе текста из PHP-кода в HTML-код, т.к. вставляет
//<br> перед каждым переводом строки \r\n, \n\r, \n и \r (в HTML не работают)
//Обе строки примера будут выведены на разных строках
echo nl2br("Первая строка.". PHP_EOL ."Вторая строка.");
echo '-------- sha1() -------- <br><br>';
//Для шифровки строки предназначены sha1(), sha1_file(), md5(), md5_file(),
//crypt()
//Выведет 8e35c31399092c3c72aecbfeadd4286af89b0a1a - это хеш слова 'дом'
echo sha1('дом')." - это хеш слова 'дом'".'<br><br>';
echo '-------- addslashes() -------- <br><br>';
//addslashes() - экранирует в строке одиночные кавычки ('),
//двойные кавычки ("), обратный слеш (\) и NUL (NULL байт).
//stripslashes() - удаляет экранирование символов
//Выведет 'Посетил \"Березку\"...'
echo addslashes('Посетил "Березку"...').'<br><br>';
echo '-------- implode() -------- <br><br>';
//implode() - объединяет элементы массива в строку, а explode() - наоборот,
//разбивает строку по указанному разделителю и возвращает массив из
//полученных частей строки
$m=['желтый','синий','красный'];
//Выведет строку 'Цвета светофора: желтый, синий, красный.'
echo 'Цвета светофора: '.implode(', ', $m).'. <br>';
$m_1=explode(', ', 'желтый, синий, красный');
//array(3) {[0]=>string(12) "желтый" [1]=>string(10) "синий"
//[2]=>string(14) "красный"}
var_dump($m_1);
echo '<br><br>';
echo '-------- strlen() -------- <br><br>';
//Выведет 20, т.к. strlen() возвращает количество байтов, а не символов.
echo strlen('Яркий цвет.').'<br><br>';
/* Отметим, что в данном разделе также находятся операторы echo и print */
echo '------- Примеры обработки многобайтовых строк -----------'.'<br><br>';
echo '-------- mb_strlen() -------- <br><br>';
//mb_strlen() — возвращает количество символов в строке
//Выведет 11
echo mb_strlen('Яркий цвет.').'<br><br>';
echo '-------- mb_strpos() -------- <br><br>';
//mb_strpos() — возвращает позицию первого вхождения подстроки в строке
//mb_stripos() — тоже самое, но без учета регистра
//Для поиска с конца строки используются mb_strrpos() и mb_strripos()
//Выведет 3
echo mb_strpos('Яблоко', 'о').'<br>';
//Начнем поиск с позиции 4 (позиции символов нумеруются с нуля)
//Выведет 5
echo mb_strpos('Яблоко', 'о', 4).'<br><br>';
echo '-------- mb_strstr() -------- <br><br>';
//mb_strstr() — ищет позицию первого вхождения подстроки в строке и
//возвращает часть строки до или после (по умолчанию) этой позиции.
//Соответственно, mb_stristr() делает тоже самое, но без учета регистра
//Для поиска с конца строки используются mb_strrchr() и mb_strrichr()
//Выведет 'око' (включая символ вхождения)
echo mb_strstr('Яблоко', 'о').'<br>';
//Выведет 'Ябл'
echo mb_strstr('Яблоко', 'о', true).'<br><br>';
echo '-------- mb_substr() -------- <br><br>';
//mb_substr() - возвращает заданную часть строки,
//включая символ стартовой позиции
//Выведет 'ий цвет.'
echo mb_substr('Яркий цвет.', 3).'<br>';
//Выведет 'Яркий'
echo mb_substr('Яркий цвет.', 0, 5).'<br>';
//Выведет 'кий цв'
echo mb_substr('Яркий цвет.', 2, 6).'<br><br>';
echo '-------- mb_substr_count() -------- <br><br>';
//mb_substr_count() - возвращает количество вхождений подстроки
//Выведет 2
echo mb_substr_count('Яблоко', 'о').'<br><br>';
echo '-------- mb_strtolower() -------- <br><br>';
//mb_strtolower() - возвращает строку в нижнем регистре,
//mb_strtoupper() - возвращает строку в верхнем регистре
//Выведет 'яблоко'
echo mb_strtolower('ЯблОко').'<br><br>';
echo '-------- mb_split() -------- <br><br>';
//mb_split() - разбивает многобайтовые строки на заданное число частей
//по указанному разделителю, используя регулярное выражение
$m_2=mb_split(' ', 'Яркий цвет ковра.', 3);
//array(3) {[0]=>string(10) "Яркий" [1]=>string(8) "цвет"
//[2]=>string(11) "ковра."}
var_dump($m_2);
?>
Пример №1. Работа со строками