Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запутался с регуляркой
 
 автор: Ури Геллер   (21.03.2010 в 14:39)   письмо автору
 
 

Вот сама регулярка

// <?
$pattern 
"/(?:http:\/\/)?((?:www)?[a-z0-9]{2,3}[a-z0-9-.]{0,59}[a-z0-9]{1}\.{1}(?:aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|muse|name|net|org|pro|tel|trav|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|no|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|euro|fi|fj|fk|fm|fo|fr|ga|gb|uk|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|yu|ru|su|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tp|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw{1})(?:\/)?[\?\/\.\&\=\%\#\+a-z0-9_-]{0,2048}(?::80)?)\b/uie";


Не совсем корректно выделяет ссылки [url]http://mishustin.net.ru/gb.php?p=3[/url.]

  Ответить  
 
 автор: heed   (21.03.2010 в 17:12)   письмо автору
 
   для: Ури Геллер   (21.03.2010 в 14:39)
 

(?:http:\/\/)? это пустая строка или http://
(?:www)? это пустая строка или www (почему-то без точки)

дальше идёт то что не может быть пустой строкой
[a-z0-9]{2,3} 2-3 цифро-буквы
сразу за ними
[a-z0-9-.]{0,59} "пусто" или не более 59и цифро-букв-минусо-точек (минус я-бы заэкранировал или поменял местами с точкой)
[a-z0-9]{1}\.{1} одна цифро-буква и точка после неё (можно было и просто сделать [a-z0-9]\. )

(?:aero|.........|zw{1}) не понял zw{1} почему :) zw{1} === zw zw{2} === zww ....... (вроде даже Фридл делал [a-z]{2} вместо таких двухбуквенных перечислений, не вдаваясь в подробности бывает-ли домен xxx.jz )

дальше необязательное
(?:\/)? это лишнее , поскольку / так и так совпадёт если нужно в следующей части шаблона
[\?\/\.\&\=\%\#\+a-z0-9_-]{0,2048} думаю понятно
(?::80)? обычно :Порт бывает сразу за именем хоста

не Фридл составил это выражение :)
Вы не волнуйтесь ,) просто таким нехитрым способом нелья понять ссылка в тексте или имя файла , с расширением например .pl бывают и домены и файлы , да и домены в зоне ру или рф (не помню точно) бывают и русскими буквами

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования