обработка изображений
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/\?\.\~&_=/%-:#]*)~', 'url_replace', $message);
$message = preg_replace_callback('~\\[url=(https://.+?)\\](.+?)\\[/url\\]|(https://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&_=/%-:#]*)~', 'url_replace', $message);
return $message;
}
если изображение выводится на екран через ECHO ''; то все хорошо (но мне это плохо, ибо json не понимает echo ) то все выводится хорошо (кроме тех мест где вывод через json)
а если сделать вывод изображения через return , то ссылка на изображение будет обрабатываться функцией url_replace() и вывод изображения становится невозможным
помогите решить это проблему