Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Фокусы с регулярными выражениями
z3rg  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



гхм
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 155
Пользователь №: 16906
На форуме: 8 лет, 3 месяца, 6 дней
Карма:




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

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


Ребята хочу сказать всем еще раз большое спасибо за помощь.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса