php - 通过正则表达式检查图像数据是否是 urlencoded jpeg
问题描述
我有以下课程:
namespace MyApp\ImageGenerators
class ImageGen
{
public function checkIfImageUrlEncodedJpeg($imageData)
{
return preg_match($someregex,$imageData);
}
}
如您所见,我想将$someregex
变量的值设置为有效的 pcre 正则表达式,它将验证提供的数据是否为 urlencoded base64Image。
解决方案
在我的代码中,我使用了以下正则表达式:
/^data:image\/jpeg;base64,\s*[A-Za-z0-9\+\/]+=*$/i
如您所见,urlencoded 数据具有以下部分:
data:^mime^;base64,^data_encoded_as_base64^
其中 ^mime^ 是编码为 base64 格式的数据的 mime 到^data_encoded_as_base64^
字段中。请记住,上面提到的方法只是将数据“看起来很整齐”作为有效的 urlencoded jpeg 图像进行检查。
在大多数情况下,我建议尤其是在这些数据是用户提供或 api 提供的情况下,通过解码实际上是 jpeg 图像的 base64 编码部分来检查。
为了简短起见,您的代码将如下所示:
namespace MyApp\ImageGenerators
class ImageGen
{
public function checkIfImageUrlEncodedJpeg($imageData)
{
return preg_match('/^data:image\/jpeg;base64,\s*[A-Za-z0-9\+\/]+=*$/i',$imageData);
}
}
推荐阅读
- php - 按页面 id SilvertStripe3 过滤数据对象
- c# - 如何让函数返回数组的索引和值?
- python - Python概率算法
- c# - Configuration.GetSection 返回空值
- angular - Angular Ng-Bootstrap Datepicker Calendar Day 背景颜色
- r - 在 Shiny 中过滤样本时出错
- google-cloud-dataflow - 数据流/apache 光束管道中的热键,打开随机播放模式是唯一的解决方案
- authentication - 如何安全地将秘密 api 密钥添加到对服务器进行 API 调用的网站?
- android - Android显示html文本的最佳方式
- c# - 在 Observable 项目生成时处理它们