我有一个值,可以是图像 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)
你的意思是你想区分
<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 并将其视为这样。