belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...

PHP+MySQL >>>

                          Учебник Задачник Справочник

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

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

<?php
echo "------- Несколько примеров из раздела 'Обработка текста' -------<br><br>";


echo '-------- htmlspecialchars() -------- <br><br>';
		
//При выводе текста из PHP-кода в HTML-код можно использовать функции 
//htmlspecialchars(), которая преобразует специальные символы в HTML-сущности, или 
//htmlentities(), которая преобразует все возможные символы в соответствующие 
//HTML-сущности. Для обратного преобразования используются функции 
//htmlspecialchars_decode() и html_entity_decode()
//ENT_QUOTES - указывает на преобразование как двойных, так и одинарных кавычек
echo htmlspecialchars('<p>Абзац</p>', ENT_QUOTES);//Выведет '<p>Абзац</p>'
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() — возвращает количество символов в строке
echo mb_strlen('Яркий цвет.').'<br><br>'; //Выведет 11


echo '-------- mb_strpos() -------- <br><br>';

//mb_strpos() — возвращает позицию первого вхождения подстроки в строке
//mb_stripos() — тоже самое, но без учета регистра 
//Для поиска с конца строки используются mb_strrpos() и mb_strripos()
echo mb_strpos('Яблоко', 'о').'<br>'; //Выведет 3 
//Начнем поиск с позиции 4 (позиции символов нумеруются с нуля)
echo mb_strpos('Яблоко', 'о', 4).'<br><br>'; //Выведет 5


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() - возвращает количество вхождений подстроки
echo mb_substr_count('Яблоко', 'о').'<br><br>'; //Выведет 2


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);
?>

Пример 8.4. Работа со строками

Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх