删除/批量删除文章/新闻内容并删除焦点图和图片文件的方法
- 3252
- PHP
- 12
- super_dodo
- 2014/12/17
在网上找了很久希望使用php删除文章/新闻内容的同时并删除焦点图和图文文件的实现代码。这样可以节省服务器的空间。同时干净网站内容,拒接冗余。尤其是可以最大最快捷的杜绝不健康分图片。防止网站被不健康的图片污染。
其实最核心的代码就是正则表达式。每次学艺不精,都为正则而发愁。下面直接上代码。仅供参考。。欢迎指正。
// 删除&&批量删除(备注:传入id删除单条,传入ids批量删除) public function actionDel(){ $request = Yii::app()->request; if($request->isAjaxRequest){ //来自ajax的请求 $delArr = array(); //组装需要删除的id数组 if($request->getParam('id')) { //删除单条记录--id $delArr[] = intval($request->getParam('id')); }else{ //批量删除--ids $delArr = $request->getParam('ids'); } if(!empty($delArr)){ //如果需要删除的数组不为空 $transaction = Yii::app()->db->beginTransaction(); try{ foreach ($delArr as $id) { $info = GoodsList::model()->findByPk($id); //删除形象图片 if(!empty($info->img)){ $infoImg = '.'.$info->img; if(file_exists($infoImg)){ unlink($infoImg); } } //正则匹配备注里面的图片 $imgRemark = preg_match_all("/<img.+src=\"([^\"]+)\"[^>]+>/isU", $info->remark,$imgArr); if($imgRemark){ //匹配成功 if(is_array($imgArr[1])){ foreach ($imgArr[1] as $img) { //循环删除图片 $imgAdd = '.'.$img; if (file_exists($imgAdd)) { unlink($imgAdd); } } } } $rt = GoodsList::model()->deleteByPk($id); if(!$rt) throw new Exception("删除失败??",1); } $transaction->commit(); $this->_end(0, '删除成功!!'); }catch(Exception $e) { $transaction->rollback(); $this->_end($e->getCode(), $e->getMessage()); } }else{ $this->_end(2,'请选择需要批量删除的条目..'); } } }
dodobook使用的Yii框架。。ajax删除。。你可以选取其中的部分代码。。相信你自己。。。
再来一个优化后的公共的方法.这个更完善更通用.因为使用了 isset()提前判断是否有该字段。。
//自定义删除的公共方法 public function uBatchDel($modelDel){ $request = Yii::app()->request; $delArr = array(); //组装需要删除的id数组 if($request->getParam('id')) { //删除单条记录--id $delArr[] = intval($request->getParam('id')); }else{ //批量删除--ids $delArr = $request->getParam('ids'); } if(!empty($delArr)){ //如果需要删除的数组不为空 $transaction = Yii::app()->db->beginTransaction(); try{ foreach ($delArr as $id) { $info = $modelDel->findByPk($id); if(isset($info->img)){ //删除形象图片 if(!empty($info->img)){ $infoImg = '.'.$info->img; if(file_exists($infoImg)){ unlink($infoImg); } } } if(isset($info->img_logo)){ //删除LOGO if(!empty($info->img_logo)){ $infoImg = '.'.$info->img_logo; if(file_exists($infoImg)){ unlink($infoImg); } } } if(isset($info->remark)){ //正则匹配备注里面的图片 $imgRemark = preg_match_all("/<img.+src=\"([^\"]+)\"[^>]+>/isU", $info->remark,$imgArr); if($imgRemark){ //匹配成功 if(is_array($imgArr[1])){ foreach ($imgArr[1] as $img) { //循环删除图片 $imgAdd = '.'.$img; if (file_exists($imgAdd)) { unlink($imgAdd); } } } } } $rt = $modelDel->deleteByPk($id); //删除记录 if(!$rt) throw new Exception("删除失败??",1); } $transaction->commit(); $this->_end(0, '删除成功!!'); }catch(Exception $e) { $transaction->rollback(); $this->_end($e->getCode(), $e->getMessage()); } }else{ $this->_end(2,'请选择需要批量删除的条目..'); } }
不要虚无缥缈的好。。。
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例