正在寻找一些基于正则表达式的帮助!已经搜索了网站,但没有找到任何适用于我的案例的解决方案。
我有一个向用户显示的表单,其中一个文本区域是屏幕截图的粘贴区域。目前,此屏幕截图数据已输入到数据库中,但由于这开始使数据库变得相当大,我决定为每个粘贴的屏幕截图创建一个单独的图像,因为它们比数据库中占用的空间占用更少的空间。
我遇到的问题是从屏幕截图中剥离 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
是粘贴的数据。
最佳答案
我可以建议删除 ^
字符串 anchor 的开始并使用 preg_match
使用\K
截断将使用 [^"<]*
捕获的图像 Base64 数据之前的所有内容模式 - 除 "
之外的 0 个或多个字符和 <
(可能,它甚至可以减少到 [^"]*
):
preg_match('#data:image/\w+;base64,\K[^"<]*#i', '<img src="data:image/png;base64,_BASE_64_DATA_HERE"><br>', $match);
echo $match[0]; // => _BASE_64_DATA_HERE
参见 IDEONE demo
关于php - 从发布的屏幕截图数据 php 中删除 img src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195481/