![]() |
Подстановка URL и мыла
Никак не могу написать регулярное выражение чтобы конструкции типа:
1. http://www.google.com/search?hl=ru&q...%EA+%E2+Google 2. http://www.google.com/search?hl=ru&q...%EA+%E2+Google 3. google.com/search?hl=ru&q=%3CA&btnG=%CF%EE%E8%F1%EA+%E2+Google 4. gg_g@ggg.ggg-g.ru заменялись на ссылки в HTML-е. Задачка выглядит просто, но почему-то не решается. Заранее спасибо. |
Как видно этот форум справился с задачкой на три четверти.
Забыл сказать, что ещё ссылка может быть на ftp и начинаться не с пробела, а скажем с перевода коретки или конца строки. Уверен что бывалые уже сталкивались с такой проблемой. |
В данном случае форум справился на 100%, т.к. в "google.com/...." нет признаков по которым его нужно считать урлом. По хорошему он и www... не должен был трогать.
Для того, чтоб сделать то что ты хочешь нужно сначала определиться с тем - ЧТО ты считаешь урлом, т.е. какие символы в нем не допустимы и какие являются разделителем. Если строго придерживать RFC то недопустимые символы, это все кроме тех, что разрешены :) Но лучше его не придерживаться, т.к. в таком случае многие штучки работать не будут (см. ниже). Допустим урл это то, что начинается с http:// или www. Недопустимы все пробельные символы - \s. $url = "\s"; А в качестве разделителей укажем - "?,()![] $url_del = "\"\?,()!\[\]"; Для e-mail - наоборот, нужно указывать допустимые. $eml = "\w-\."; По поводу FTP С одной стороны - его нельзя делать вместе с http, так как для него нужно так же как и в случае с e-mail указывать допустимые символы. С другой стороны - никто же не будет писать ftp://domain.com?lalala. Но тут ещё одна штука, ведь многие пишут фтп не как ftp://domain.com а так ftp.domain.com. Если ты хочешь заменять ftp. на ftp:// - тогда нужно делать отдельно. Но это ты сам наверное сможешь. По этому сделаем ftp вместе с http. Код:
$str = 'С твоими прмерами наш регэксп справится так же, а с дополнительными - лучше:) ---- Дополнительно: ftp://domain.com посмотри http://domain.com! бывает запятая в урле http://domain.com?srarch=1,2,3,4,&aaa=bbb, а бывает после него бывает вопросительный знак в урле и после него http://domain.com?srarch=1,2,3,4,&aaa=bbb? редирект http://domain.com?redir=http://flasher.ru/? а если в самом редиректе есть query http://domain.ru?redir=http://flasher.ru/?q=query? ещё бывает в скобках: (http://domain.com) [http://domain.com] и даже кавычках "http://domain.com" ------- |
Но ведь google.com - это тоже ссылка на страничку.
|
| Часовой пояс GMT +4, время: 05:08. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.