Преобразование URL в теги

Есть некий текст, в котором встречаются фразы типа «А не сходить ли тебе на 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>';
?>

Готово.

Автор: Дмитрий Бородин

Источник: http://www.php.su/articles/?cat=vars&page=008

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты