Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


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

Пример

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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 все равно никто не отменял.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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>';

?>

Результат

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

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

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

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

Опубликовано: 18 декабря 2010  ·  Автор: Артём Фёдоров  ·  7089 просмотров

Категория

ГлавнаяПрограммированиеPHPРегулярные выраженияpreg_replace и русские буквы

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

ru_RU.koi8r - для CentOS
Russian_Russia.1251 -для Windows 7
Леший Кикиморов · 1 год назад
В кодировке WINDOWS-1251 не работает полностью. Подсветка есть только у слов, совпадающие по регистру.
Леший Кикиморов · 1 год назад
Регулярные выражения, PHP, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания