В тексте нужно найти ссылку на картинку, и взять ее в тег Набросал замену, но срабатывает только для статических картинок и http когда картинка с динамическим окончанием или по https, то не срабатывает выражение. PHP: $str = preg_replace("/(http:\/\/)?([a-zA-Z0-9\-.]+\.[a-zA-Z0-9\-]+([\/]([a-zA-Z0-9_\/\-.?&%=+])*)*)(\.jpeg|\.jpg|\.png|\.gif|\.bmp)/", '[img]http://$2$5[/img]', $str); Как сделать универсально для динамических и https ?
Набросал как с текста выдернуть ссылки в массив PHP: $img = '/(http|https):\/\/(.*?)(\s|\n|[,.?!](\s|\n)|$)/'; preg_match_all($img, $str, $out); В $out[0] все ссылки с текста. Нужно наверное проверить все ссылки на предмет картинок через exif_imagetype и затем сравнивать и обрамлять в теги. Не могу найти решения ((
Поскольку в контенте будут ссылки только с картинками, пока решено PHP: $img = '/(http|https):\/\/(.*?)(\s|\n|[,.?!](\s|\n)|$)/'; $str = preg_replace($img, '[img]$1://$2[/img]', $str); Позже буду разбираться с проверкой контента по ссылке.
Зачем качать к себе на сервер, если можно на "лету" проверить? Так можно какой то вирус спрятан под картинку закачать )) Вот я такое набросал, если можно как то упростить еще, буду рад вашим предложениям. PHP: function find_img($matches) { $a =trim($matches[0]); if (@exif_imagetype($a) == FALSE) { return ($matches[0]); } else { return ('[img]'. ($matches[0]).'[/img]'); } } $img = '/(http|https):\/\/(.*?)(\s|\n|[,.?!](\s|\n)|$)/'; echo preg_replace_callback($img,"find_img",$str);
тебе нужно было проверить файл является изображением или просто есть ли в его имени расширение изображения? Если в публичную папку выгружать и давать ссылку на изображение + переконвертирование может помочь
твой код качает в оперативную память изображение по ссылки или файл локальный и уже определяет если это изображение
Это плохо?? Разве он весь качает? exif_imagetype() считывает начальные байты изображения и проверяет их сигнатуру.
Хз... только учусь, могу не все ппонимать )))) Тут вот http://www.php.net/exif_imagetype Если заменить на getimagesize() ? Что предпочтительней?
качает и читает это разные вещи первый читает, второй пытается работать как с изображением и может определить битое или не правильное с большей вероятностью чем exif_imagetype