php文章中图片解决的利用
摘要:php文章中图片解决的利用
php文章中图片解决的利用
array_diff($arr1,$arr2)
php数组函数之一,用来计算数组的差集.
正则婚配html图片标签
用sinaeditor减少的图片删除操作
用法之一,今天晚上在用新浪编辑器发表文章的过程中.
利用到了此函数
成绩形容:
文章中有图片若干.在添加文章的过程中主动上传到网站的图片目录中
在修正文章的过程中假设对图片停止相干的删除操作.那么只管在代码中(已经存入数据库);
已经删除了数据的标签.类似于<img src=http://......>这样的标签.然而图片的文件照旧存在于
网站上.这时分需求肯定的解决
解决办法:
首先:从数据库中失去原始的文章内容
从里面失去图片的文件名
用到了正则
方法如下
代码如下:
public function getimgsinarticle($content)
{
$temp = array();
$imgs = array();
preg_match_all('/http[^d]*[d]+[.](jpg|gif|png)/',$content,$temp);
$temp = $temp[0];
if(!empty($temp[0]))
{
for($i=0;$i<count($temp);$i++)
{
$imgs[$i] = pathinfo($temp[$i]);
$imgs[$i] = $imgs[$i]['basename'];
}
return $imgs;
}
else
{
return false;
}
}
对正则停止下解释,先婚配http四个字母然后婚配非数字的字符若干个.婚配数字字符至
少一个,婚配点(.)一个,婚配以jpg或gif或png开头从$congtent中查找.后果存入$temp中.
将数据库中的原始数据中的图片保存在数组中.命名为$oldimgs
这个中央我觉得应该改进下,存入后打印进去是二维数组.用起来有点麻烦
注:我的图片称号是类似于这个样子命名的:"201111291322589013.jpg"
第二步:
从用户提交过来的内容中找到一切的图片方法如上.失去数组二命名为$newimgs
对arr1和arr2求差集方法如下
--也就是说假设原始数据中的图片不存在于用户新提交的内容中.那么将删除这个图片.
代码如下:
$oldimgs = $this->getimgsinarticle($oldarticledata['article_content']);
$newimgs = $this->getimgsinarticle($data['articlecontent']);
//print_r($newimgs);
$newimgs = empty($newimgs)?array():$newimgs;
if($oldimgs!=false)
{
$diff = array_diff($oldimgs,$newimgs);
$diff = array_values($diff);
if(!empty($diff))
{
for($i=0;$i<count($diff);$i++)
{
$this->delimg($diff[$i],ARTICLE_IMG_DIR);
}
}
}
删除图片的方法如下 很简略.
代码如下:
public function delimg($imgname,$dir)
{
@unlink($dir.'http://www.yhzhan.com/'.$imgname);
return true;
}
这样我的目标就达到了.当用户编辑了带有图片的文章.假设删除了图片.那么相应的图片也会从网站上删除
失去文章中的图片称号的方法还可能运用到删除文章的过程中.
在删除图片的方法中的$dir可能用realpath(__FILE__)加上各种"./""../"去给出图片目录相对于网站的目录
对于失去html中的门路这里的正则写的不是很好.有待钻研.最近发现一本正则的书.很不错
php数组函数之一,用来计算数组的差集.
正则婚配html图片标签
用sinaeditor减少的图片删除操作
用法之一,今天晚上在用新浪编辑器发表文章的过程中.
利用到了此函数
成绩形容:
文章中有图片若干.在添加文章的过程中主动上传到网站的图片目录中
在修正文章的过程中假设对图片停止相干的删除操作.那么只管在代码中(已经存入数据库);
已经删除了数据的标签.类似于<img src=http://......>这样的标签.然而图片的文件照旧存在于
网站上.这时分需求肯定的解决
解决办法:
首先:从数据库中失去原始的文章内容
从里面失去图片的文件名
用到了正则
方法如下
代码如下:
public function getimgsinarticle($content)
{
$temp = array();
$imgs = array();
preg_match_all('/http[^d]*[d]+[.](jpg|gif|png)/',$content,$temp);
$temp = $temp[0];
if(!empty($temp[0]))
{
for($i=0;$i<count($temp);$i++)
{
$imgs[$i] = pathinfo($temp[$i]);
$imgs[$i] = $imgs[$i]['basename'];
}
return $imgs;
}
else
{
return false;
}
}
对正则停止下解释,先婚配http四个字母然后婚配非数字的字符若干个.婚配数字字符至
少一个,婚配点(.)一个,婚配以jpg或gif或png开头从$congtent中查找.后果存入$temp中.
将数据库中的原始数据中的图片保存在数组中.命名为$oldimgs
这个中央我觉得应该改进下,存入后打印进去是二维数组.用起来有点麻烦
注:我的图片称号是类似于这个样子命名的:"201111291322589013.jpg"
第二步:
从用户提交过来的内容中找到一切的图片方法如上.失去数组二命名为$newimgs
对arr1和arr2求差集方法如下
--也就是说假设原始数据中的图片不存在于用户新提交的内容中.那么将删除这个图片.
代码如下:
$oldimgs = $this->getimgsinarticle($oldarticledata['article_content']);
$newimgs = $this->getimgsinarticle($data['articlecontent']);
//print_r($newimgs);
$newimgs = empty($newimgs)?array():$newimgs;
if($oldimgs!=false)
{
$diff = array_diff($oldimgs,$newimgs);
$diff = array_values($diff);
if(!empty($diff))
{
for($i=0;$i<count($diff);$i++)
{
$this->delimg($diff[$i],ARTICLE_IMG_DIR);
}
}
}
删除图片的方法如下 很简略.
代码如下:
public function delimg($imgname,$dir)
{
@unlink($dir.'http://www.yhzhan.com/'.$imgname);
return true;
}
这样我的目标就达到了.当用户编辑了带有图片的文章.假设删除了图片.那么相应的图片也会从网站上删除
失去文章中的图片称号的方法还可能运用到删除文章的过程中.
在删除图片的方法中的$dir可能用realpath(__FILE__)加上各种"./""../"去给出图片目录相对于网站的目录
对于失去html中的门路这里的正则写的不是很好.有待钻研.最近发现一本正则的书.很不错