php笔记之:文章中图片处理的使用
文章中的图片处理在PHP中的实际应用
在编辑文章的过程中,处理图片是一项重要任务。今晚,我在使用新浪编辑器发表文章时,遇到了一个有趣的问题,并借助PHP的数组函数和正则表达式解决了它。
问题背景:
处理办法:
从数据库中获取原始的文章内容,这里我们使用正则表达式来提取文章中的图片文件名。具体的函数如下:
```php
public function getImgsInArticle($content) {
$temp = array();
$imgs = array();
preg_match_all('/http[^\d][\d]+[\.](jpg|gif|png)/', $content, $temp);
$imgs = $temp[0];
if (!empty($imgs)) {
foreach ($imgs as $img) {
$imgInfo = pathinfo($img);
$imgs[] = $imgInfo['basename'];
}
return $imgs;
} else {
return false;
}
}
```
这个函数通过正则表达式从文章内容中提取图片链接,并返回包含图片名的数组。接下来,从用户提交的新内容中提取所有的图片,并与原始图片数组进行比较。如果原始数组中的图片在用户新提交的内容中没有出现,那么我们就将其删除。具体代码如下:
```php
$oldImgs = $this->getImgsInArticle($oldArticleData['article_content']);
$newImgs = $this->getImgsInArticle($data['articlecontent']);
$newImgs = empty($newImgs) ? array() : $newImgs;
if ($oldImgs !== false) {
$diff = array_diff($oldImgs, $newImgs);
if (!empty($diff)) {
foreach ($diff as $imgName) {
$this->delImg($imgName, ARTICLE_IMG_DIR);
}
}
}
```
删除图片的方法很简单:
```php
public function delImg($imgName, $dir) {
@unlink($dir . '/' . $imgName);
return true;
}
```
这样,当用户编辑带有图片的文章并删除了某些图片时,相应的图片也会从网站上删除。获取文章中的图片名称的方法还可以应用于删除文章的过程中。对于获取图片目录的相对路径,可以使用 `realpath(__FILE__)` 结合各种路径来指定。需要注意的是,这里的正则表达式有待深入研究和改进。最近,我发现一本关于正则表达式的书——《精通正则表达式第三版》,由Jeffrey E.F. Friedl著,余晟(cheng)译,非常值得一读。
通过PHP的数组函数和正则表达式,我们可以有效地处理文章中的图片,提升网站的管理效率。