我目前正在将截图(通过文本编辑器)插入数据库,因此插入数据库的字符串如下:
<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。
非常感谢任何帮助或指导!
答案 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"
}