накладка 2х функций

1. ensteyn-asen (19.12.2011 / 01:05)
есть 2 функции:

1я - обрабатывает ссылки в тексте, чтоб они были кликабельны
2я - обрабатывает изображение, чтоб оно отображалось в сообщении

а вот и они

обработка ссылок
function url_replace($url) {

if(empty($url[3]) )
{
return '<a href="' . $url[1] . '">' . $url[2] . '</a>';
}
else
{
return '<a href="' . $url[3] . '">' . $url[3] . '</a>';
}
unset($url);
}


2. ensteyn-asen (19.12.2011 / 01:05)
обработка изображений
function img_replaces($img) {

$size = getimagesize($img[1]);

if (in_array(strtolower(substr($img[1] , 1 + strrpos($img[1] , '.'))) , array('gif', 'jpg', 'png', 'jpeg', 'bmp')))
{
$ratio = ($size[1] < 100 && $size[0] > 300) ? $size[0]/350 : $size[0]/150;

echo '<center><hr size="3" color="darkgray" noshade><a href="' . $img[1] . '"><img src="' . $img[1] . '" width="'.ceil($size[0]/$ratio).'" height="'.ceil($size[1]/$ratio).'" alt="' . $img[2] . '"></a><br><a href="' . $img[1] . '">Скачать</a> ['.$size[0].'x'.$size[1].']</a></center>';
}
else
{
echo '<center><hr><img src="../images/system/noimg.jpg" alt="Нет изображения"><br>' . $img[1] . '<br></center>';
}

unset($img , $size , $ratio);
}

ссылка обрабатывается в виде обычной ссылки в тексте и в виде ББ-кода [url=http://]NAME[/url]
изображение обрабатывается в виде ББ-кода [img=http://]NAME[/img]

ссылки и изображения ищутся регулярными выражениями
сообщение обрабатывается этой функцией на выводе на экран
function come_text($message){

$message = preg_replace_callback('~\\[img=(http://.+?)\\](.+?)\\[/img\\]~', 'img_replaces', $message);
$message = preg_replace_callback('~\\[img\\](http://.+?)\\](.+?)\\[/img\\]~', 'img_replaces', $message);

$message = preg_replace_callback('~\\[url=(http://.+?)\\](.+?)\\[/url\\]|(http://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~', 'url_replace', $message);

$message = preg_replace_callback('~\\[url=(https://.+?)\\](.+?)\\[/url\\]|(https://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~', 'url_replace', $message);

return $message;
}

если изображение выводится на екран через ECHO ''; то все хорошо (но мне это плохо, ибо json не понимает echo ) то все выводится хорошо (кроме тех мест где вывод через json)

а если сделать вывод изображения через return , то ссылка на изображение будет обрабатываться функцией url_replace() и вывод изображения становится невозможным

помогите решить это проблему

3. ensteyn-asen (19.12.2011 / 02:32)
неужели никто не знает ?

4. ensteyn-asen (21.12.2011 / 02:42)
все еще актуально

URL: https://visavi.net/topics/27562