通过正则表达式检查图像数据是否为 urlencoded jpeg
Checking if imagedata are urlencoded jpeg via regex
我有以下 class:
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
如您所见,经过 urlencode 的数据包含以下部分:
data:^mime^;base64,^data_encoded_as_base64^
其中 ^mime^ 是在 ^data_encoded_as_base64^
字段中编码为 base64 格式的数据的 mime。请记住,上面提到的方法只是检查数据 "looks line" 是否为有效的 urlencoded jpeg 图像。
我建议在大多数情况下特别是,以防这些数据是用户提供的或api提供的,通过解码base64编码部分来检查实际上是一张 jpeg 图片。
为了简短起见,您的代码将如下所示:
namespace MyApp\ImageGenerators
class ImageGen
{
public function checkIfImageUrlEncodedJpeg($imageData)
{
return preg_match('/^data:image\/jpeg;base64,\s*[A-Za-z0-9\+\/]+=*$/i',$imageData);
}
}
我有以下 class:
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
如您所见,经过 urlencode 的数据包含以下部分:
data:^mime^;base64,^data_encoded_as_base64^
其中 ^mime^ 是在 ^data_encoded_as_base64^
字段中编码为 base64 格式的数据的 mime。请记住,上面提到的方法只是检查数据 "looks line" 是否为有效的 urlencoded jpeg 图像。
我建议在大多数情况下特别是,以防这些数据是用户提供的或api提供的,通过解码base64编码部分来检查实际上是一张 jpeg 图片。
为了简短起见,您的代码将如下所示:
namespace MyApp\ImageGenerators
class ImageGen
{
public function checkIfImageUrlEncodedJpeg($imageData)
{
return preg_match('/^data:image\/jpeg;base64,\s*[A-Za-z0-9\+\/]+=*$/i',$imageData);
}
}