Проверка, если imagedata являются jpeg urlencoded через регулярное выражение - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть следующий класс:

namespace MyApp\ImageGenerators

class ImageGen
{

  public function checkIfImageUrlEncodedJpeg($imageData)
  {
     return preg_match($someregex,$imageData);
  }

}

Как видите, я хочу установить значение переменной $someregex в правильное регулярное выражение pcre, где оно будет проверять, являются ли предоставленные данныеurlencoded base64Image.

1 Ответ

0 голосов
/ 11 сентября 2018

В своем коде я использовал следующее регулярное выражение:

/^data:image\/jpeg;base64,\s*[A-Za-z0-9\+\/]+=*$/i

Как видите, данные в кодировке Urlen имеют следующие части:

data:^mime^;base64,^data_encoded_as_base64^

Где ^ mime ^ - это мим данных, которые закодированы в формате base64 в поле ^data_encoded_as_base64^. Имейте в виду, что в упомянутом выше подходе он просто проверяет, что данные «выглядят как линия» как допустимое изображение в формате JPEG с кодировкой Urlen.

Я бы рекомендовал в большинстве случаев , особенно , в случае, если эти данные предоставлены пользователем или предоставлены 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);
  }
}
...