PHP 文章内容图片全部删除函数,content字段包含的图片全部删除函数。

技术文档 - php相关

2019-11-24

 暂无演示  

PHP 文章内容图片全部删除函数,content字段包含的图片全部删除函数。

/**
 * 删除文章内容的图片
 *
 * Auther www.youhutong.com
 * @param content 内容
 * @param includePath 图片链接包含的路径(要删除的)
 */
function delete_content_images($content, $includePath = []) {
	if(empty($content)) return true;
	#1、  定义两个数组(用来一会存内容中所有包含图片的链接数组和需要删除的图片数组)
	$matches = $result = [];
	#2、  先处理需要删除的图片(包含路径就是需要删除的)数组
	$includePath = $includePath ? (array)$includePath : ['www.youhutong.com'];
	#3、  正则匹配出内容中所含的所有图片连接,并存到数组$matches中去。
	$reg = '/((http|https):\/\/)+(\w+\.)+(\w+)[\w\/\.\-]*(jpg|gif|png|jpeg|bmp)/';
    preg_match_all($reg, $content, $matches);

    #4、  1)遍历所有图片链接,然后再遍历我们自己定义要删除包含路径的数组
    #4、  2)然后判断  --> 再处理图片完整路径  -->  得到可以删除的路径
	foreach ($matches[0] as $image) {
		foreach($includePath as $path){
			# 判断链接包含要删除的路径没有,当然判断条件自己可以变通的
			if(strpos($image, $path) !== false){
				# 处理图片链接得到需要删除图片的数据,并存到$result中去
				...
				...
				...
				...
				...
				...
				...
			}
		}
    }

    # 返回需要删除的图片数据
	return $result;
}

preg_match_all()     函数

说明:

函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。

语法:

int preg_match_all( string pattern, string subject, array matches [, int flags ] )
参数描述
pattern正则表达式
subject需要匹配检索的对象
matches存储匹配结果的数组
flags

可选,指定匹配结果放入 matches 中的顺序,可供选择的标记有:

  1. PREG_PATTERN_ORDER:默认,对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推

  2. PREG_SET_ORDER:对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推

  3. PREG_OFFSET_CAPTURE:如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量

strpos()     函数

说明:函数对大小写敏感。

查找字符串在另一字符串中第一次出现的位置如果没有找到字符串则返回 FALSE。

语法:

strpos(string,find,start)
参数描述
string必需。规定要搜索的字符串。
find必需。规定要查找的字符串。

start

可选。规定在何处开始搜索。