post textarea圖文資訊到後台,但是後台無法提取到圖片數組,求解????

來源:互聯網
上載者:User
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']); 的結果來驗證一下

轉義是為了入庫方便,轉義符不會被資料庫保留

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.