确定值是 base64 字符串还是图像 URL 的最佳方法是什么?

dit*_*tto 4 php base64

我有一个值,可以是图像 URL 或图像 Base64 字符串。确定哪个是哪个的最佳方法是什么?如果它是图像 URL,则图像将已驻留在我的服务器上。

我试过做一个 preg_match 但我认为在一个潜在的巨大 base64 字符串上运行一个 preg_match 将是服务器密集。

编辑:迄今为止的两种最佳方法。

// if not base64 URL
if (substr($str, 0, 5) !== 'data:') {}

// if file exists
if (file_exists($str)) {}
Run Code Online (Sandbox Code Playgroud)

Mar*_*c B 5

你的意思是你想区分

<img src="http://example.com/kittens.jpg" />
and
<img src="data:image/png;base64,...." />
Run Code Online (Sandbox Code Playgroud)

您只需要查看 src 属性的前 5 个字符即可确定它是否是数据 uri,例如

if (substr($src, 0, 5) == 'data:')) {
    ... got a data uri ...
}
Run Code Online (Sandbox Code Playgroud)

如果它看起来不像数据 uri,那么可以安全地假设它是一个 URL 并将其视为这样。