《summernote在線編輯器提交的內容PHP處理其中圖片函數》要點:
本文介紹了summernote在線編輯器提交的內容PHP處理其中圖片函數,希望對您有用。如果有疑問,可以聯系我們。
相關主題:PHP開發 / summernote在線編輯器
在PHP服務器端,接收到表單中的summernote編輯器數據,需要對其中的圖片處理,主要是實現:
1、base64圖片處理。
2、空行清理,XSS過濾。
本函數主要是實現功能1,也可以整合功能2,詳見參數說明
下面函數說明:
1、mkdirs($imgUploadPath) 是遞歸創建目錄函數,如果不會用到遞歸多層目錄,那么你也可以用mkdir()來代替。
2、常量 WEBROOT 是網站根目錄,可以替換成你自己的常量。
3、RemoveXSS()函數是移除XSS,需要改成你自己的。
返回值:
1、直接引用內容所在的內存地址,因此不依靠返回值。調用了函數后,內容會被變更
2、返回值是返回處理了base64的圖片后,在服務器本地保存的http路徑。可能是“/”路徑開頭的,也可能是http://開頭的。
調用示例:
$re = summernoteEditor($content, $this->imgUpPath, $this->imgHttpPath, false); #其中$re數組保存了處理過base64的圖片,包含路徑,如果沒有處理,則為空數組。$content因地址綁定,后續調用都是處理過的值。
函數代碼:
/** 維易php前端summernote編輯器上傳內容處理:1、base64圖片處理,2、XSS過濾 * 來源: http://www.snjht.com 維易php培訓 * 轉發請保留網址,尊重別人勞動成果,謝謝! * @param $content 上傳的內容 * @param bool $imgUploadPath 圖片上傳物理路徑,如M:/web/web1/uploads/.... 如果不提供,則不保存base64上傳的圖片 * @param bool $imgHttpPath 圖片的http路徑,如果不提供,則不保存base64上傳的圖片 * @param bool $isClearEmpty 是否處理XSS和空行清理。如果后面用到其它同樣功能處理函數,就不需要清理,設置為false * @param array 返回處理后的圖片數組,每列是 最后保存的路徑+圖片名: */ function summernoteEditor(&$content , $imgUploadPath='' ,$imgHttpPath = '' , $isClearEmpty = true) { $summernoteUpPics = []; //經本函數處理的圖名最后路徑 if(empty($content)) return $summernoteUpPics; preg_match_all('#<img [^>]*src\s*=\s*[\'"]?([^\'"]+)[\'"]?[^>]*>#is',$content,$m); if(!empty($m)){ $allowUpload = (!empty($imgUploadPath) && !empty($imgHttpPath)); if($allowUpload){ $imgUploadPath = rtrim($imgUploadPath,'/').'/'; $imgHttpPath = rtrim($imgHttpPath,'/').'/'; } foreach ($m[1] as $k=>$img){ //保存base64字符串為圖片 ...... if (preg_match('/^/', $img, $imginfo)) { $type = $imginfo[1]; $newImgName = date('YmdHis').random(2).random(2).'.'.$type; $imgContent = str_replace($imginfo[0], '', $img); //檢查內容是否符合base64格式, if (!preg_match('/^[a-zA-Z0-9\+\/\=]+$/', $imgContent)) { $content = str_replace($m[0][$k],'',$content); //替換掉 continue; } if(!is_dir($imgUploadPath)) mkdirs($imgUploadPath); //創建目錄 if($allowUpload && file_put_contents($imgUploadPath.$newImgName, base64_decode($imgContent)) ){ $httpImgPath = $imgHttpPath.$newImgName; $content = str_replace($img, $httpImgPath ,$content); //替換掉base64 $summernoteUpPics[] = $httpImgPath; }else{ $content = str_replace($m[0][$k],'',$content); //保存失敗就清除掉圖片 } } elseif (preg_match('#^https?:\/\/[a-zA-Z0-9\_\-\.\?\/]+#is', $img, $imginfo)) //正常圖片不處理:遠程的另有采集處理 { continue; } elseif(!file_exists(WEBROOT.ltrim($img,'/'))) { //不存在的非正常圖片,不是網址,也不是base64,也不在服務器上已存在的(內容編輯時原有圖片),就替換掉。 $content = str_replace($m[0][$k],'',$content); } } } if(!$isClearEmpty) return $summernoteUpPics ; //移除空行 if(!empty($content)) $content = preg_replace('#^(?:\s*<p>\s*(<br[^<>]*>\s*)+\s*</p>\s*)+#is','', $content); if(!empty($content)) $content = preg_replace('#(?:\s*<p>\s*(<br[^<>]*>\s*)+\s*</p>\s*)+$#is','',$content); //清理前后的空行 $content = trim($content); //移除xss if( !empty($content)) $content = RemoveXSS($content, false, true, ''); return $summernoteUpPics ; }
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/54.html