写真抽出 http
ユーザーがテキストエリア内の写真を削除し、別の写真をアップロードするときに、サーバーのスペースを節約するために、kindeditor を使用してテキストエリアのオンライン編集ボックスを作成しました。 。元のデータベースにあるテキストエリアの画像を抽出して配列を形成し、配列内の各値を新しく渡されたテキストエリア in_array() と比較し、存在しない画像を削除しました。 。奇妙なことに、新しく渡された textarea から画像配列を抽出できず、抽出結果は空の配列になります。 。アドバイスをお願いします、ありがとうございます。 。 ユーザーがテキストエリア内の画像を削除した場合
新しく渡されたテキストエリアから画像アドレスを抽出するにはどうすればよいですか?
正確には、ユーザーがテキストエリア内の特定の画像 (exp.jpg など) を削除し、それをバックグラウンドに送信すると、$_POST['textarea'] から抽出された画像配列の値が 1 つ減ります。それはexp.jpgです。 。このとき、元のデータベースのテキストエリアから抽出された画像配列と、バックグラウンドで受信した画像配列が比較されます。画像上の欠落しているパスは、フォアグラウンドでユーザーによって削除されたが、サーバー上では削除されていない画像です。 。 。
ユーザーが textarea 内の画像を削除したとき
新しく渡された textarea から画像アドレスを抽出するにはどうすればよいでしょうか?
問題は、いずれの場合も、バックグラウンドから受け取った $_POST['textarea'] から抽出された画像配列が空であることです。 。しかし、$_POST['textarea'] には確かに img 画像があります。 。奇妙なのは、データベースに保存して抽出すると正しいのですが、$_POST['textarea'] から直接抽出すると空にしかならないことです。 。
ユーザーが textarea 内の画像を削除したとき
新しく渡された textarea から画像アドレスを抽出するにはどうすればよいでしょうか?
どのように抽出したかを知る必要があります
$_POST['textarea'] の内容も知る必要があります
フロントエンドの textarea の内容:
<p><span style="line-height:1.5;"><img src="/info/201311/1384551494771680415.jpg" data-ke-src="/info/201311/1384551494771680415.jpg" alt=""><br></span></p><p><span style="line-height:1.5;">爱微淘是一</span><span style="line-height:1.5;">家专业从事移动应用开发、微信api开发的技术团队。</span> </p>
$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]; // 返回只带有图片路径的一维数组}
$s =<<< HTML<p><span style="line-height:1.5;"><img src="/info/201311/1384551494771680415.jpg" data-ke-src="/info/201311/1384551494771680415.jpg" alt=""><br></span></p><p><span style="line-height:1.5;">爱微淘是一</span><span style="line-height:1.5;">家专业从事移动应用开发、微信api开发的技术团队。</span> </p>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));
バックグラウンドで直接印刷した後、php が img div span などの二重引用符でタグを自動的にエスケープすることがわかりました。が掲載されていました。 。
そのため、画像タグは となるため、正規表現を検証できません。 。
投稿されたデータに対してstripslashes()を使用してバックスラッシュを削除すればOKです。 。
奇妙なことに、データベースに書き込まれるテキストエリアにはバックスラッシュがありません。 。
$s =<<< HTML<p><span style="line-height:1.5;"><img src="/info/201311/1384551494771680415.jpg" data-ke-src="/info/201311/1384551494771680415.jpg" alt=""><br></span></p><p><span style="line-height:1.5;">爱微淘是一</span><span style="line-height:1.5;">家专业从事移动应用开发、微信api开发的技术团队。</span> </p>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));
エスケープは保存の便宜のためであり、エスケープ文字はデータベースに保持されません