为了账号安全,请及时绑定邮箱和手机立即绑定

php关于文章中本地上传图片,和网络图片,如何正确的区分并显示他们

php关于文章中本地上传图片,和网络图片,如何正确的区分并显示他们

PHP
大话西游666 2019-03-11 15:27:25
在php中,一篇文章中的内容,可能会从本地上传图片,或者引用网络图片。上传图片呢,文章内容保存在数据库中,就只是这个图片的路径,例如: <img src="/data/images/2017/09/26/20170926141255_51116.png"> 如果是引用网络图片呢,保存在数据库中是完整的链接,例如: <img src="http://images2015.cnblogs.com/blog/782095/201510/782095-20151008152329596-1587178049.png"> 那么根据文章ID,去显示这篇文章时候,对于上传图片的正确显示处理目前有了,如下 $pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png]))[\'|\"].*?[\/]?>/"; preg_match_all($pattern,$content,$matches); $img = ""; if(!empty($matches)) { //src的值是放在数组的第1个 $img = $matches[1]; }else { $img = ""; } if (!empty($img)) { $img_url = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST']; $patterns= array(); $replacements = array(); foreach($img as $imgItem){ $final_imgUrl = $img_url.$imgItem; $replacements[] = $final_imgUrl; $img_new = "/".preg_replace("/\//i","\/",$imgItem)."/"; $patterns[] = $img_new; } } //让数组按照key来排序 ksort($patterns); ksort($replacements); //替换内容 $vote_content = preg_replace($patterns, $replacements, $content); 这样就可以让上传图片,正确显示出来,那么请问一下,如何在这其中,屏蔽掉是网络引用的图片呢??因为网络图片已经有完整的链接地址了。 谢谢,不胜感激
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

第一个方法就是直接修改你的正则表达式,将src中http开头的都过滤掉。
或者在 foreach($img as $imgItem) 中判断 $img 是以http:// 或者https://开头的就不处理呗

查看完整回答
反对 回复 2019-03-18
?
墨色风雨

TA贡献1853条经验 获得超6个赞

可以在表中增加一个标识性字段,例如:from_type等等,根据这个字段来判断图片来源。

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 371 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信