通过正则表达式检查图像数据是否为 ​​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);
  }
}