Сделайте ссылки кликабельными с помощью регулярных выражений - PullRequest
1 голос
/ 07 августа 2009

Существует ли регулярное выражение, которое может найти строку, содержащую слово, начинающееся с http: // или www, и обернуть его <a>$1</a>?

Я гуглил, но я не могу найти окончательный вариант.

Еще один вопрос, не могли бы вы как-нибудь заставить его игнорировать его, если он внутри тега <img>?

Спасибо большое!

Ответы [ 2 ]

8 голосов
/ 07 августа 2009
    $text = trim($text);
    while ($text != stripslashes($text)) { $text = stripslashes($text); }    
    $text = strip_tags($text,"<b><i><u>");
    $text = preg_replace("/(?<!http:\/\/)www\./","http://www.",$text);
    $text = preg_replace( "/((http|ftp)+(s)?:\/\/[^<>\s]+)/i", "<a href=\"\\0\" target=\"_blank\">\\0</a>",$text);
1 голос
/ 07 августа 2009

Удачи с этим - найти начало довольно легко (большую часть времени); найти конец? Удачи:

Это действительные URL. См. RFC2396. Но иногда вам нужна конечная пунктуация, иногда нет.

/ мне интересно, для чего он может использовать URL с (*')!, теперь, когда он знает, что это разрешено RFC2396.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...