我用kindeditor做了一个textarea在线编辑框,当用户删除textarea里面的图片上传另外图片的时候,为了节省服务器空间。。我将原来数据库中textarea的图片提取出来组成数组,然后将该数组中每一个值与新传递的textarea对比in_array(),不存的图片就删除掉。。奇怪的,新传递过来的textarea中,却无法提取到图片数组,提取结果为空数组。。求大礼赐教,谢谢。。post提取图片http
调试欢乐多
你如何能从新传递过来的textarea中提取出图片地址?
也需要知道 $_POST['textarea'] 的内容
<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]; // 返回只带有图片路径的一维数组
}
<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));Array
(
[0] => /info/201311/1384551494771680415.jpg
)
你的代码并没有什么大问题不过还是需要 echo base64_encode($_POST['textarea']); 的结果来验证一下
所以图片标签变成了<img src="\"/info/201311/201311153533227.jpg\""> 所以正则验证不出来。。
对post过来的数据进行stripslashes()去反斜杠就OK了。。
奇怪的是,写入数据库中的textarea却没有反斜杠。。