PHP :: Обработка текста
Следует помнить, что в PHP отсутствует встроенная поддержка Unicode, т.е. язык поддерживает только 256 различных символов, каждому из которых соответствует один байт. Поэтому, для работы с многобайтовыми кодировками вроде UTF-8, которая используется нами при верстке веб-страниц, следует отдавать предпочтение специальным функциям и расширениям для работы с многобайтовыми строками. Все они собраны в разделе «Поддержка языков и кодировок» -> «Многобайтовые строки». Что касается функций для работы с однобайтовыми строками, то их нужно искать в разделе «Обработка текста». При этом отметим, что некоторые функции одинаково полезны как для работы с однобайтовыми, так и многобайтовыми строками. Использование некоторых функций для обработки строк показано в примере №1 (не забывайте заглядывать в справочник).
<?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. Работа со строками