Обработка текста в PHP
http://belarusweb.net
Основы создания сайтов

Обработка текста

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

PHP Результат BwCodes
<?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. Работа со строками

Быстрый переход к другим страницам