aNeo
Новичок
PHP:
function uurl($txt){
//return $txt; всегда возвращает найденную ссылку
//return strlen($txt); всегда возвращает цифру 2 вне зависимости от размера ссылки
$count= preg_match( "'([\w\+]+://)([A-z0-9\.\?\+\-_=&%#:;]+)([A-z0-9\.\?\+\-/_=&%#:;]*)'si", $txt, $result );
if($count){
$host= $result[2]==$_SERVER["HTTP_HOST"]?$result[3]:$result[0];
if( strlen($result[3])>30 )
{$result[0]= $result[1].$result[2].substr($result[3],0 , 5).' ... '.substr($result[3], -10);}
return '[a href="'.$host.'" target="_blank"]'.$result[0].'[/a]';
}else{
return $txt.'!!!'; // !!! для проверки работы скрипта
}
}
function bigurl2url($text){
return preg_replace( "'[\w\+]+://[A-z0-9\.\?\+\-/_=&%#:;]+[\w/=]+'si", uurl("$0"), $text );
}
echo bigurl2url("http://izgr.ru http://izgr.ru/?user1 http://blablabla.ru/ups")
сложная функция нужна для того, что бы ссылки работали в локальной сети. так как сайт в локалке на собственном, нестандартном домене. плюс, слишком длинные ссылки укорачиваются
как-то странно ведет себя php в этом случае. Предполагаю, что в функцию uurl() попадает не ссылка, а идентификатор ее, но... return $txt; работает нормально.
Может кто сталкивался, подскажите.