post 提取圖片 http
我用kindeditor做了一個textarea線上編輯框,當使用者刪除textarea裡面的圖片上傳另外圖片的時候,為了節省伺服器空間。。我將原來資料庫中textarea的圖片提取出來組成數組,然後將該數組中每一個值與新傳遞的textarea對比in_array(),不存的圖片就刪除掉。。奇怪的,新傳遞過來的textarea中,卻無法提取到圖片數組,提取結果為空白數組。。求大禮賜教,謝謝。。
回複討論(解決方案)
當使用者刪除textarea裡面的圖片時
你如何能 從新傳遞過來的textarea中提取出圖片地址?
確切地說,是當使用者刪除textarea中的某一張圖片,如exp.jpg,提交到後台,那麼從該$_POST['textarea']中提取的圖片數組應該就少了一個值,即exp.jpg 。。這個時候從原來資料庫的textarea提取的圖片數組和後台接收的圖片數組相對比,缺少的那個圖上路徑就是使用者在前台刪除卻未在伺服器刪除的圖片。。
當使用者刪除textarea裡面的圖片時
你如何能 從新傳遞過來的textarea中提取出圖片地址?
問題就在於,在任何情況下,從後台接收的$_POST['textarea']提取的圖片數組都為空白。。但$_POST['textarea']中確實是有img圖片的。。奇怪的是儲存到資料庫在提取就是對的,直接從$_POST['textarea']中提取就只能得到為空白。。
當使用者刪除textarea裡面的圖片時
你如何能 從新傳遞過來的textarea中提取出圖片地址?
需要知道你是如何提取的
也需要知道 $_POST['textarea'] 的內容
前台textarea中的內容:
愛微淘是一家專業從事行動裝置 App開發、api開發的技術團隊。
後台接收及處理:
$content = isset($_POST['content']) ? $_POST['content']: false ;$pic_now = get_pic_html($content); //現在的圖片數組print_r($pic_now); // always empty /* * 從html中提取圖片整合到數組 @ param string $str @ return array*/function get_pic_html($str){ $pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.png|\.jpg]))[\'|\"].*?[\/]?>/"; // 正則式 preg_match_all($pattern,$str,$match); return $match[1]; // 返回只帶有圖片路徑的一維數組}
需要知道你是如何提取的
也需要知道 $_POST['textarea'] 的內容
$s =<<< HTML
愛微淘是一家專業從事行動裝置 App開發、api開發的技術團隊。
HTML;function get_pic_html($str){ $pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.png|\.jpg]))[\'|\"].*?[\/]?>/"; // 正則式 preg_match_all($pattern,$str,$match); return $match[1]; // 返回只帶有圖片路徑的一維數組}print_r(get_pic_html($s));
Array
(
[0] => /info/201311/1384551494771680415.jpg
)
你的代碼並沒有什麼大問題
不過還是需要 echo base64_encode($_POST['textarea']); 的結果來驗證一下
後台直接列印才發現php對post過來的img div span 等帶有雙引號的標籤自動加了轉義。。
所以圖片標籤變成了 所以正則驗證不出來。。
對post過來的資料進行stripslashes()去反斜線就OK了。。
奇怪的是,寫入資料庫中的textarea卻沒有反斜線。。
$s =<<< HTML
愛微淘是一家專業從事行動裝置 App開發、api開發的技術團隊。
HTML;function get_pic_html($str){ $pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.png|\.jpg]))[\'|\"].*?[\/]?>/"; // 正則式 preg_match_all($pattern,$str,$match); return $match[1]; // 返回只帶有圖片路徑的一維數組}print_r(get_pic_html($s));
Array
(
[0] => /info/201311/1384551494771680415.jpg
)
你的代碼並沒有什麼大問題
不過還是需要 echo base64_encode($_POST['textarea']); 的結果來驗證一下
轉義是為了入庫方便,轉義符不會被資料庫保留