PHP

preg_replace и русские буквы

Пример

Например нам нужно подсветить слова в тексте. Рассмотрим пример в двух кодировках — utf-8 и windows-1251

Кодировка UTF-8

Давно пора переходить на юникод.
<?php

$words = 'тексте этот слова строке текст время балды регистр подсветить';

$text = 'В нашем тЕксТе нам необходимо найти все Слова, указанные в стрОке поиска и подсветить их красным цветом. Так же во время поиска необходимо учитывать РЕГИСТр букв. Этот ТЕКСТ я набирал от Балды, лишь бы выдать пример. Все слова должны быть подсвечены.';

echo '<p>'.$text.'</p>';
echo '<p>Нам нужно подсветить слова: <strong>'.$words.'</strong></p>';

// устанавливаем локаль
setlocale(LC_ALL, 'ru_RU.UTF-8');

// заменяем пробелы на символ |
$words = str_replace(' ', '|', $words);

// нам нужны 2 модификатора:
// u — модификатор включает обработку шаблонов как UTF-8 строк
// i — символы в шаблоне соответствуют как верхнему, так и нижнему регистрам
$hl_text = preg_replace('/('.$words.')/ui', '<span style="color:red;">$1</span>', $text);

echo '<p>'.$hl_text.'</p>';

?>


Кодировка WINDOWS-1251

Windows-1251 все равно никто не отменял.
<?php

$words = 'тексте этот слова строке текст время балды регистр подсветить';

$text = 'В нашем тЕксТе нам необходимо найти все Слова, указанные в стрОке поиска и подсветить их красным цветом. Так же во время поиска необходимо учитывать РЕГИСТр букв. Этот ТЕКСТ я набирал от Балды, лишь бы выдать пример. Все слова должны быть подсвечены.';

echo '<p>'.$text.'</p>';
echo '<p>Нам нужно подсветить слова: <strong>'.$words.'</strong></p>';

// устанавливаем локаль
setlocale(LC_ALL, 'ru_RU.CP1251');

// заменяем пробелы на символ |
$words = str_replace(' ', '|', $words);

// нам нужен 1 модификатор:
// i — символы в шаблоне соответствуют как верхнему, так и нижнему регистрам
$hl_text = preg_replace('/('.$words.')/i', '<span style="color:red;">$1</span>', $text);

echo '<p>'.$hl_text.'</p>';

?>


Результат

Результат в обоих случаях будет одинаковый:

В нашем тЕксТе нам необходимо найти все Слова, указанные в стрОке поиска и подсветить их красным цветом. Так же во время поиска необходимо учитывать РЕГИСТр букв. Этот ТЕКСТ я набирал от Балды, лишь бы выдать пример. Все слова должны быть подсвечены.

Нам нужно подсветить слова: тексте этот слова строке текст время балды регистр подсветить

В нашем тЕксТе нам необходимо найти все Слова, указанные в стрОке поиска и подсветить их красным цветом. Так же во время поиска необходимо учитывать РЕГИСТр букв. Этот ТЕКСТ я набирал от Балды, лишь бы выдать пример. Все слова должны быть подсвечены.
Теги:
preg_replace, русские буквы
Добавлено: 17 Августа 2013 07:16:19 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...