从已发布的屏幕截图数据中删除img src

时间:2015-07-02 22:10:26

标签: php regex base64 screenshot

寻找一些基于正则表达式的帮助!已搜索过该网站,但未找到任何适用于我的案例的解决方案。

我有一个向用户显示的表单,其中一个文本区域是屏幕截图的粘贴区域。目前,此屏幕截图数据已输入数据库,但由于这开始使数据库变得非常大,我决定为每个粘贴的屏幕截图创建一个单独的图像,因为这些图像占用的空间比数据库中占用的空间少。 / p>

我遇到的问题是从屏幕截图中剥离img src标签等,并成功将数据保存到可以正确打开的图像文件中。

粘贴的屏幕截图数据将插入数据库,如下所示:

<img src="data:image/png;base64,_BASE_64_DATA_HERE"><br> 

在发布此数据时,如何删除不必要的项目并保留base64数据,创建已保存的PNG图像?

目前我有这个,这对我来说不太合适,只是创建一个无法打开的图像:

list($type, $data) = explode(';', $data);
list(, $data)      = explode(',', $data);
$data = base64_decode($screenshot);
$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $screenshot));

file_put_contents('screenshots/screens.png', $data);

$screenshot是粘贴的数据。

1 个答案:

答案 0 :(得分:1)

我建议删除字符串锚点的^开头,并使用preg_match使用\K截断所有将使用{{1}捕获的图像Base64数据之前的所有内容} pattern - 除[^"<]*"以外的0个或多个字符(可能甚至可以缩减为<):

[^"]*

请参阅IDEONE demo