Текст, передаваемый из preg_match в функцию

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")
всегда возвращает результат с восклицательными знаками. даже когда патэрн ставлю из bigurl2url() в uurl()

сложная функция нужна для того, что бы ссылки работали в локальной сети. так как сайт в локалке на собственном, нестандартном домене. плюс, слишком длинные ссылки укорачиваются

как-то странно ведет себя php в этом случае. Предполагаю, что в функцию uurl() попадает не ссылка, а идентификатор ее, но... return $txt; работает нормально.
Может кто сталкивался, подскажите.
 

aNeo

Новичок
блин, даже стыдно.
да, _callback все исправил.
спасибо
 
Сверху