Преобразование URL в теги <a href>
Автор: Дмитрий Бородин
Есть некий текст, в котором встречаются
фразы типа "А не сходить ли тебе на http://site.com ?".
Задача: Сделать все слова, похожие на ссылки, html-ссылками,
т.е. преобразовать текст примера вот так:
"А не пойти ли тебе на
<a href=http://site.com>http://site.com ?</a>".
После линии идет полный код программы.
<?php
$buf="
http://любая.мура
sadkjfjkas dfkjasdf ajksd fjkdsfh jksdf kasjdfh kjdfjksdaf
asfdasd.fklja sdfk.jaas kasldf.jaskldjfls.kadjfkls.dfjaklsdf
1 www1.ru
2 www2.ru/123/123
3 PHP.SPB.RU
4 www.php.spb.ru
5 www.123.456.ru/1234/asd#tip-top
6 http://www.ru
7 http://www.ru/123/123
8 http://php.spb.ru
9 http://www.php.spb.ru
10 HTTP://www.dmitry.spb.ru/nado/ftp/?icq2000b.exe (скачать новую Асю :-)
11 dmitry.spb.ru
BAD
BAD234579324875.12312
BAD.q
www.BAD.rrrr
www.BAD.123
";
echo "<big><b>Имеется текст:</b></big> <pre>$buf</pre>";
// 1 //
$buf=strtolower($buf);
preg_match_all
("/(http:\\/\\/)?([a-z_0-9-.]+\\.[a-z]{2,3}(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/",
$buf,$url);
echo "<big><b><br><br>1. В тексте было найдено:</b></big><pre>";
for($i=0; $i<count($url[2]); $i++)
echo "<a href='http://".$url[2][$i]."'>".$url[2][$i]."</a>\n";
echo "</pre>";
// 2 //
echo "<big><b><br><br>2. Замена текста-ссылки на html-код прямо в тексте:</b></big><pre>";
$x=explode(" ",$buf);
for ($j=0; $j<count($x); $j++) {
if (preg_match
("/(http:\\/\\/)?([a-z_0-9-.]+\\.[a-z]{2,3}(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/",
$x[$j],$ok))
echo str_replace($ok[2],"<a href='http://$ok[2]'>$ok[2]</a>",
str_replace("http://","",$x[$j]))." ";
else
echo $x[$j]." ";
}
echo '</pre>';
?>
Готово.