[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: регулярки в utf-8
Gradus
Нужно из шаблона достать все линки (<link>) вместе с их адресами
написал под на win 1251 всё замечательно работает
preg_match_all('/<link.+href\s*=.*([\w\.-]+?).*>/Ui',$get, $link);

теперь нужно тоже самое с utf-8, ну судя по докам нашёл алиасы к \w и \s.Именно замена \w не работает, достаёт только адрес до первого слеша
preg_match_all('/<link.+href\p{Z}*=.*([\p{L}\p{Nd}\.-]+?).*>/Uui',$get, $link);




Спустя 3 минуты, 7 секунд (31.05.2012 - 15:15) Игорь_Vasinsky написал(а):
единственное отличие работы с кириллицей и юникодом - это наличие для последней модификатора u

Спустя 20 минут (31.05.2012 - 15:35) Gradus написал(а):
а вот и не правда, некорректно работает \w
http://www.pcre.org/pcre.txt
http://habrahabr.ru/post/45910/

Спустя 3 минуты, 43 секунды (31.05.2012 - 15:39) Игорь_Vasinsky написал(а):
познавательно. не сталкивался.

Спустя 16 минут, 17 секунд (31.05.2012 - 15:55) Gradus написал(а):
нашёл пока вот такой выход
preg_match_all('/<link.+href\p{Z}*=.*([A-z\/\.-]+?).*>/Uui',$get, $link);

А-я нельзя прописать ибо ругается, т.е. обходимся без рус названий

Спустя 5 минут, 35 секунд (31.05.2012 - 16:01) inpost написал(а):
Зачем ты пишешь букву А большой, если у тебя стоит модификатор i ?
Кроме этого, если это русская А, то заканчиваться должна и русской буквой я.
\s - всегда корректно работал у меня, как и \d, не знаю, в каких скриптах вы живёте...

Спустя 10 минут, 46 секунд (31.05.2012 - 16:12) Gradus написал(а):
inpost, потому что обрабатываешь файлы не utf-8 без bom вот и работает.
Ну конечно русские стоят а и я (разве есть 'я' не русская на станд. рус клавах ? :) )
модификатор i на сколько я знаю распространяется на символьные константы в шаблоне, т.е. на всё кроме условий, то есть link и LINK это без разницы , а вот на условия типа [a-z] это не действует.Можете проверить, у меня по крайней мере на практике именно так и работает.Но возможно в другой кодировке и на условия модификатор действует, не проверял
preg_match_all('/<link.+href\p{Z}*=.*([A-z\/\.-]+?).*>/Uui',$get, $link); // работает
preg_match_all('/<link.+href\p{Z}*=.*([а-z\/\.-]+?).*>/Uui',$get, $link); // не работает

Спустя 2 часа, 51 минута, 12 секунд (31.05.2012 - 19:03) inpost написал(а):
Gradus
Я работаю на utf-8 without bom. Всё работает. Не понимаю о чём ты...

Спустя 7 минут, 20 секунд (31.05.2012 - 19:10) Gradus написал(а):
inpost, говори проще <<У меня работает, остальные идиоты>>, что темнить то ? smile.gif
возьми проверь \w , будем разбираться почему кругом идиоты если у тебя работает smile.gif

Спустя 6 минут (31.05.2012 - 19:16) inpost написал(а):
Ты писал про: "некорректно работают \s \w \d "
Давай прямой пример, где \s или \d не будут работать? \w не берём в пример, разбираем другие 2/3 утверждения. Просто небольшой пример, если тебе не сложно.

Спустя 27 минут, 3 секунды (31.05.2012 - 19:43) Gradus написал(а):
inpost, я тебе именно про \w говорил.Проверил \s и \d норм работают.Но в доке почему-то прописаны и к ним алиасы.Ну да ладно отредактирую пост, дабы не давать ложную инфу.


_____________
ДАВАЙ ДЕНЬГИ
R543264623869
Быстрый ответ:

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