Venom
Guest
Нахождение и замена url в тексте.
Я понимаю, что тема старая и избитая, что уже дано много десятков всяких вариантов, но универсального я так и не нашёл, что в инете, что на этом форуме все не то. Зашёл тут на php.spb.ru и нашёл вот эту статейку http://php.spb.ru/php/url2.html она мне не очень подходил в плане интеграции в скрипт, но всё таки я переделал её слеганца, вроде бы на этом и все должно было бы и закончиться функция со своими делами справляется всё норм, НО в ней есть такой очень существенный не достаток имена файло с расширением она опознаёт как url, что мне категорически не нужно. Помогите исправить этот недочёт.
Вот код функции с моими исправлениями:
Я понимаю, что тема старая и избитая, что уже дано много десятков всяких вариантов, но универсального я так и не нашёл, что в инете, что на этом форуме все не то. Зашёл тут на php.spb.ru и нашёл вот эту статейку http://php.spb.ru/php/url2.html она мне не очень подходил в плане интеграции в скрипт, но всё таки я переделал её слеганца, вроде бы на этом и все должно было бы и закончиться функция со своими делами справляется всё норм, НО в ней есть такой очень существенный не достаток имена файло с расширением она опознаёт как url, что мне категорически не нужно. Помогите исправить этот недочёт.
Вот код функции с моими исправлениями:
PHP:
function char_register ($str)
{
$str = strtoupper($str);
$str = strtr($str,"абвгдеёжзийклмнопрстуфхцчшщъыьэюя","АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ");
return $str;
}
function change_url ($str)
{
$str = $str." ";
$str = str_replace ("<br>", " <br>", $str);
preg_match_all("/(http:\\/\\/)?([a-z_0-9-.]+\\.[a-z]{2,3}(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/", $str, $url);
for($i=0; $i<count($url[2]); $i++)
{
$str_upper = char_register($str);
$ulr_upper = char_register($url[1][$i].$url[2][$i]);
$place = strpos ($str_upper, $ulr_upper);
$url[2][$i] = trim($url[2][$i]);
$str = substr_replace ($str, "<a href=\"http://".$url[2][$i]."\">".$url[2][$i]."</a>", $place, max (strlen ($url[1][$i].$url[2][$i]), strlen ($url[1][$i].$url[2][$i])));
}
$str = str_replace (" <br>", "<br>", $str);
$str = trim($str);
return $str;
}
echo change_url($text);