数据库中的content里的图片删除 方法

本文介绍了一种使用 PHP 实现的图片上传和删除的方法。通过正则表达式匹配 HTML 内容中的图片链接,并利用特定函数进行本地或远程图片的删除操作。该方法适用于需要维护网站图片资源的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先可以用正则写个匹配内容里的图片

function delete_local($content, $userid, $ext = 'jpg|jpeg|gif|png|bmp|swf') {
	if(preg_match_all("/src=([\"|']?)([^ \"'>]+\.($ext))\\1/i", $content, $matches)) {
		foreach($matches[2] as $url) {
			delete_upload($url, $userid);
		}
		unset($matches);
	}
}

匹配出的$url 可以用删除脚本去处理 类似 可以是这样

function delete_upload($file, $userid) {
	global $CFG, $DT, $DT_TIME, $ftp, $db;
	if(!defined('DT_ADMIN') && (!$userid || $userid != match_userid($file))) return false;
	if(!$file) return false;
	$fileurl = $file;
	if(strpos($file, 'file/upload') === false) {//Remote
		if($DT['ftp_remote'] && $DT['remote_url']) {
			if(strpos($file, $DT['remote_url']) !== false) {
				if(!is_object($ftp)) {
					require_once DT_ROOT.'/include/ftp.class.php';
					$ftp = new dftp($DT['ftp_host'], $DT['ftp_user'], $DT['ftp_pass'], $DT['ftp_port'], $DT['ftp_path'], $DT['ftp_pasv'], $DT['ftp_ssl']);
				}
				$file = str_replace($DT['remote_url'], '', $file);
				$ftp->dftp_delete($file);
				if(strpos($file, '.thumb.') !== false) {
					$ext = file_ext($file);
					$F = str_replace('.thumb.'.$ext, '', $file);
					$ftp->dftp_delete($F);
					$F = str_replace('.thumb.'.$ext, '.middle.'.$ext, $file);
					$ftp->dftp_delete($F);
				}
				if($DT['ftp_save']) delete_upload(DT_PATH.'file/upload/'.$file, $userid);
			}
		}
	} else {
		$exp = explode("file/upload/", $file);
		$file = DT_ROOT.'/file/upload/'.$exp[1];
		if(is_file($file) && strpos($exp[1], '..') === false) {
			file_del($file);
			if(strpos($file, '.thumb.') !== false) {
				$ext = file_ext($file);
				file_del(str_replace('.thumb.'.$ext, '', $file));
				file_del(str_replace('.thumb.'.$ext, '.middle.'.$ext, $file));
			}
		}
	}
	if($DT['uploadlog']) $db->query("DELETE FROM {$db->pre}upload_".($userid%10)." WHERE item='".md5($fileurl)."'");
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值