В общем возникла такая потребность...
В RegExp'ах я не сильно силен, но на вашу помощь понадеюсь...
Ситуация такая:
Есть текст, к примеру:
$text = "слово1 слово2 http://example.com/page1.html слово3 и тд";
мне надо регулярным выражением так обработать этот текст, чтоб мнимая ссылка стала физической в виде html...
наброски я как бы сделал:
$text = preg_replace("/(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?)/i","<a href='$1'>$1</a>", $text);
все как бы работает, но не правильно нарезает, если текст будет примера:
$text = "слово1 слово2 http://example.com/page1.html<br />слово3 и тд";
как быть?
Спустя 57 минут, 44 секунды (15.05.2009 - 16:33) glock18 написал(а):
Думаю, что вытащить любую ссылку таким образом из любого текста, либо очень сложно, либо невозможно.
Но если после ссылки кроме пробелов могут идти только теги, то можно попробовать заменить
Но если после ссылки кроме пробелов могут идти только теги, то можно попробовать заменить
Код |
(\/\S*) |
на
Код |
([^\s<]*) |
.
Выражение, впрочем, кажется не особо надежным в плане выхватывания ссылок из текста - часть ссылок, очевидно будет потеряна.
PS: ты используешь модификатор i в выражение. С ним можешь не дублировать буквы обоих регистров. А [a-zA-Z0-9] можно заменить на \w. Вот примерно, что получится:
Выражение, впрочем, кажется не особо надежным в плане выхватывания ссылок из текста - часть ссылок, очевидно будет потеряна.
PS: ты используешь модификатор i в выражение. С ним можешь не дублировать буквы обоих регистров. А [a-zA-Z0-9] можно заменить на \w. Вот примерно, что получится:
Код |
(http:\/\/[\w\-\.]+\.[a-z]{2,3}([^\s<]*)?) |
Спустя 5 минут, 44 секунды (15.05.2009 - 16:39) Grazor написал(а):
когда-то писал такую штуку(чуть обновил). единственное, она почему-то не тащит подряд идущие ссылки. то есть из "www.site.ru www.site.ru www.site.ru" ссылками станут первый и третий адреса. ещё подумаю над этим
PHP |
<?php |
получилось объёмненько, но работает
_____________
Чим я більше довідаюся людей, тим я більше починаю любити собак...
Україна - це моя країна і моя рідна мова!
Чим більше вип'є комсомолець - тим менше вип'є хуліган!
Усе в житті взаємозалежно: живеш - хочеться випити, випив - хочеться жити...