preg_replace и utf-8

12 3
Inoteol
На сайте с 19.03.2009
Offline
60
5163

Собствено требуется обрабатывать словосочетания. Без юникода было все ок.

Имеется исходный текст


$text = "Приведу здесь краткое руководство"

Почему не имеет никакого эффекта

$text = preg_replace('/\bздесь\b/u','',$text);

Для сведения, срабатывает конструкция

$text = preg_replace('/\sздесь\s/u','',$text);

Только словосочетание не всегда озачает что разделено пробелом, для этого и существует '\b'.

R
На сайте с 02.10.2007
Offline
16
#1

$text = preg_replace('/\s?здесь\s?/u','',$text);

Без модификатора "u" работает кстати правильно. Просто в utf видимо буквы не рассматривает как символы, принадлежащие к классу "word" - \w. Поэтому и ниче не делает.

Никогда не говори никогда (http://suhih.ru)
Inoteol
На сайте с 19.03.2009
Offline
60
#2
Rusk:

Без модификатора "u" работает кстати правильно. Просто в utf видимо буквы не рассматривает как символы, принадлежащие к классу "word" - \w. Поэтому и ниче не делает.

Да, я же писал что до utf работало исправно. Да и в python с такой конструкцией обрабатывает utf нормально.

Я уже думал, что придется конвертировать в cp1251 и обратно.

Rusk:
$text = preg_replace('/\s?здесь\s?/u','',$text);

Спасиб! Так работает.

A
На сайте с 16.11.2008
Offline
12
#3
Inoteol:
Да, я же писал что до utf работало исправно. Да и в python с такой конструкцией обрабатывает utf нормально.
Некошерно, но придется конвертировать в cp1251 и обратно :(

По сабжу, preg_replace для обычного слова? Не лучше для конкретной задачи str_replace?

А вообще, работайте в UTF: регулярки в UTF, тексты в UTF. Кошерно работать сразу в UTF ☝

Пишу на похапэ (/ru/forum/342374). Аудит скриптов. За деньги. Качественно.
FeoOne
На сайте с 27.12.2008
Offline
32
#4

php4/5 не умеют работать с юникодом. под юникод есть несколько функций, которые начинаются с приставки mb_

А вообще поддержку юникода обещают в php6

[Удален]
#5
FeoOne:
php4/5 не умеют работать с юникодом

чООО? С какого перепуга? :)

PS Наверное вы имели ввиду не юникод, а кодировку utf-8? К сведению - это разные вещи.

A
На сайте с 16.11.2008
Offline
12
#6
FeoOne:
php4/5 не умеют работать с юникодом. под юникод есть несколько функций, которые начинаются с приставки mb_
А вообще поддержку юникода обещают в php6

Угага. Жаль, что минусануть не могу - с удовольствием бы бацнул.

malls
На сайте с 08.08.2005
Offline
255
#7
FeoOne:
php4/5 не умеют работать с юникодом. под юникод есть несколько функций, которые начинаются с приставки mb_
А вообще поддержку юникода обещают в php6

Да уж насмешили... :)

HraKK
На сайте с 02.03.2009
Offline
128
#8

php4/5 не умеют работать с массивами. под масссивы есть несколько функций, которые начинаются с приставки array_

А вообще поддержку массивов обещают в php6

я гарант (/ru/forum/493343) уже не оказываю данные услуги, извините.
FeoOne
На сайте с 27.12.2008
Offline
32
#9

ё моё, имелось ввиду "php4/5 не умеет правильно работать с кириллицей в юникоде".

И правильную поддержку кириллицы обещают в пхп6

malls
На сайте с 08.08.2005
Offline
255
#10
FeoOne:
ё моё, имелось ввиду "php4/5 не умеет правильно работать с кириллицей в юникоде".
И правильную поддержку кириллицы обещают в пхп6

ё моё, а мужики то не знают!

Блин наверное придется теперь все мои проекты переконвертировать с юникода на 1251 обратно! Как же я так лоханулся то пару лет назад!

Спасибо FeoOne что открыл глаза!

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий