删除img src标签并保留base64数据(来自文本编辑器的屏幕截图)

时间:2014-10-31 23:00:50

标签: php image base64

我目前正在将截图(通过文本编辑器)插入数据库,因此插入数据库的字符串如下:

<img src="data:image/png;base64, [BASE64 STRING]" alt="">

我试图剥离<img src=" and " "alt="">以便我只剩下data:image/png;base64, [BASE64 STRING],以便我可以操纵图像在另一端的显示方式。

不幸的是,必须通过textarea将图像作为屏幕截图插入,因此上传图像/将图像保存到其他位置并存储位置不是一个选项。

是否有可能在数据库插入之前删除除base64数据之外的所有数据,或者在检索图像时除去?

到目前为止,我一直在使用类似于下面的preg_replace和strip_tags,但没有用。

echo preg_replace('/<(\s*)img[^<>]*>/i', '', $screenshot);
echo strip_tags($screenshot, '<img>');

其中$ screenshot是从db中获取整个字符串的查询。

最终我希望能够以弹出窗口或类似方式显示图像,为此我需要原始base64图像组合,但是当将屏幕截图插入textarea(使用文本编辑器)时,标签已经包含在内,因此传递给db。

非常感谢任何帮助或指导!

1 个答案:

答案 0 :(得分:0)

使用preg_match,此正则表达式将获取src。

$img = '<img src="data:data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" alt="">';
preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $img, $matches);
var_dump($matches);

array(2) {
  [0]=>
  string(325) "<img src="data:data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7"
  [1]=>
  string(315) "data:data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7"
}