Просмотр полной версии : регулярные выражения. вопрос
DRON-ANARCHY
30.04.2007, 18:29
вопрос:
$mess=preg_replace("!(https?|ftp)://(.*?)([\s<'\"]){1,}!ise", "'<a href=\"\\1://\\2\" target=\"_blank\">\\1://\\2</a>\\3'", $mess);
я не до конца раскурил эти штуки... но все-таки...
Мне надо бы сделать так, чтобы оно жрало ссылки вида
www.site.ru
site.ru
www.ste.ru?parametr=zna4enie
а то в таком виде кушает только вместе в протоколом и без параметров
GreenBear
30.04.2007, 18:37
http://regexlib.com/Search.aspx?k=link
посмотри )
DRON-ANARCHY
30.04.2007, 18:46
Спасиба. Я весь гугл обшарил, а эту штуку не находил)
DRON-ANARCHY
30.04.2007, 19:01
Не блин... хрень какая-то... там все служебные символы закручены через кодировки и я хрен славливаюсь...
$regex="#^(http://|https://|ftp://)?[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|cgi|pl|phtml))?([-a-z0-9_:@&\?=+,\.!/~*'%$]+)?$#i";
Вот так вот, должно работать:)
А это тебе для чего? Если тебе этим в чате или в форуме фильтровать, то под него попадут все любители не ставить пробел после точки, как тут "Привет.Как дела" - <a href="//Привет.Как/"...
$mess=preg_replace('!(https?:|ftp:|)(//|)([\w]+\.\w[\w.]+)/?([^\<\>\"\n\r\\\\?]*|)(\?[^\<\>\"\n\r\\\\]*|)!i', '<a href="\1//\3/\4\5" target="_blank">\1//\3/\4\5</a>', $mess);
DRON-ANARCHY
30.04.2007, 21:18
Hidden спасибо. так работает... но теперь смайлики перестали отображаться)))))))))))
PS мне под гостевуху....
Hidden спасибо. так работает... но теперь смайлики перестали отображаться)))))))))))
PS мне под гостевуху....Приведи пример, каие именно, может щя исключения для них сделаю :)
DRON-ANARCHY
30.04.2007, 21:29
адреса должны иметь вид
images/smiles/smile37.gif
а твоя строка переворачивает все слеши и ваще не пойми чего творит))
<img src="images/smiles/<a href="//smile9.gif/" target="_blank">//smile9.gif/</a>" border="0">
чорт. я загнался совсем! Убейте меня!!!! я забыл что слеши надо У СЕБЯ перевернуть!!!! бекап юзаю..абассака я дурачок
все исправил. теперь ситуация описана актуально)
Ну так она не может отличить имя с расширением от домена первого и второго уровня, можно не принимать единичный слеш перед доменным именем, можно фильтровать возможные доменные имена первого уровня, а можно фильтровать возможные расширения файлов, а вообще, смайлы должны обрабатываться после него. Когда я обрабатываю ббкоды, я их превращаю в промежуточную форму, чтоб не попадали под следующие выражения, а потом, всех сразу, в html
DRON-ANARCHY
30.04.2007, 21:42
Простите неразумного. Меня сегодня совсем мухи засидели)))
смайлы должны обрабатываться послевот это был ключевой момент. спасибо огромное!
Простите неразумного. Меня сегодня совсем мухи засидели)))
вот это был ключевой момент. спасибо огромное!Смотри, главное проверь, чтоб они внутрь url не попали, лучше сразу на них исключения поставить, приведи какие именно смыйлы используешь
DRON-ANARCHY
30.04.2007, 21:48
Э.... не совсем понял...
что именно нужно привести? Полные имена?
Э.... не совсем понял...
что именно нужно привести? Полные имена?
Нет, какие именно смайлы?
Пример: :) ;) :D :p ...
DRON-ANARCHY
30.04.2007, 21:56
а... ну это просто. Разновидности имеют такие символы...
1) :)
2) !)
3) :lol:
вроде ниче опасного
[hidden *] Есть такая галочка "Отключить смайлики в тексте" ;)
[dron-anarchy] Я запомню... ;)
[Great] А никто ее еще не поставил :)
PS закрываем-с...
Ну вот, вроде всё предусмотрел :)
В аттаче, т.к. форум фильтрует
BB коды на регекспах не пишут - потенциальные места для XSS. Используйте конечный автомат, на phpclub'е видел отличную реализацию недавно.
BB коды на регекспах не пишут - потенциальные места для XSS.Это смотря кто пишет.Используйте конечный автомат, на phpclub'е видел отличную реализацию недавно.Я лично больше доверяю своей реализации, чем неизвестно чьей, и буду уверен, в том, что туда не попадёт то, что не должно попасть, особенно после часов 3 перепроверки.
Это смотря кто пишет. Ты не прав, т.к. по любому еще остается человеческий фактор.
Ошибку может допустить любой, хотя вероятность появления ошибки с повышением опыта уменьшается.
хотя вероятность появления ошибки с повышением опыта уменьшается.Полностью согласен, поэтому я и не хочу полагаться на то, что у того, кто пишет те фильтры, больше опыта.Ошибку может допустить любой ;)
Ну тогда же почему бы и не пойти путем, где может встретиться меньше ошибок?
Я вобщем-то не говорил взять скрипт того чувака, а советовал писать не через регекспы, а через StateMachine(как тот чел и делал) - вероятность ошибок будет сведена к минимуму.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot