[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Фокусы с регулярными выражениями
z3rg
Здравствуйте. Такой вопрос как такое может быть. Получаю текст со страницы сайта, хочу разбить на слова, регулярным выражением:

$text=file_get_contents("http://phpforum.ru/");
print_r( preg_replace('/[^\w ]/', '', $text) );


Но регулярное выражение удаляет русские. Английские слова нормально вырезаются. Кодировки одинаковые. Подскажите пожалуйста в чем может быть проблема.



Спустя 2 часа, 13 минут, 8 секунд (25.12.2011 - 17:57) dadli написал(а):
\w - етот елемент означает в регулярке толко англиские букви, цифри и подчеркивание _ ето мои вивод из етого примера:
$str = 'настроики settings';
echo preg_replace("#([\w]+)#u","<b>$1</b>",$str);

резултат: настроики settings
то есть етот елемент не понимает не англиские букви
(ето мои вивод, может ошиабюс, если ктото поправит, буду благодарен)

а что ви хотите получить что-то не понял.

Спустя 2 часа, 59 минут, 1 секунда (25.12.2011 - 20:56) z3rg написал(а):
dadli, у меня на локальке нормально определяет а на хостинге нет.

Даже вот так не срабатывает
$text=file_get_contents("http://phpforum.ru/");
print_r( preg_replace('/[^A-zА-я ]/', '', $text) );


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

Спустя 10 минут, 14 секунд (25.12.2011 - 21:06) vital написал(а):
Юзаем юникод.
И в регулярке вместо \w -> \p{L}

Спустя 42 минуты, 50 секунд (25.12.2011 - 21:49) z3rg написал(а):
Юзаем юникод.
И в регулярке вместо \w -> \p{L}


Ага, спасибо, вроде воркает а как сделать чтобы не зависело от кодировки скрипта?

Спустя 1 час, 22 минуты, 27 секунд (25.12.2011 - 23:12) Winston написал(а):
Цитата (z3rg @ 25.12.2011 - 20:49)
а как сделать чтобы не зависело от кодировки скрипта?

Никак.
При работе с латиницей пофиг на кодировку, а вот с кириллицей всегда траблы.
Цитата (vital @ 25.12.2011 - 20:06)
\p{L}

Можно и просто \pL

Спустя 2 минуты, 58 секунд (25.12.2011 - 23:15) z3rg написал(а):
Winston, не кстати нормально тупо \p{L} и там и там, я проверил. vital огромное спасибо за подсказку.

Спустя 1 минута, 18 секунд (25.12.2011 - 23:16) dadli написал(а):
z3rg
и символ ё надо отделно написать в шаблоне
'/[^a-zа-яё ]/i'

Спустя 45 секунд (25.12.2011 - 23:17) Winston написал(а):
Кому интересно смотрите ещё.

Спустя 12 часов, 46 минут, 8 секунд (26.12.2011 - 12:03) duhon написал(а):
спасибо помогло

Спустя 56 минут, 28 секунд (26.12.2011 - 12:59) z3rg написал(а):
duhon, не логично, как это тоже самое [^\w ] и [^\W\w]. \W - это все символы не образующие слово. \w - все символы образующие слова. Мне нужно удалить все символы которые не являются словами. Соответственно я удаляю все символы за исключением тех которые являются словами.

$str = 'настроики , asda , , , , , settings';
echo preg_replace('/[^\w ]/', '', $str );


Ребята хочу сказать всем еще раз большое спасибо за помощь.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.