4

画像の URL または画像の Base64 文字列のいずれかの値があります。どちらがどちらであるかを判断するための最良の方法は何ですか? 画像の URL の場合、画像はサーバーに既に存在します。

preg_match を実行してみましたが、潜在的に巨大な base64 文字列で preg_match を実行するとサーバー負荷が高くなると思います。

編集:これまでのところ2つの最良の方法。

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

// if file exists
if (file_exists($str)) {}
4

3 に答える 3

5

つまり、区別したいということです

<img src="http://example.com/kittens.jpg" />
and
<img src="data:image/png;base64,...." />

src 属性の最初の 5 文字を確認するだけで、それがデータ uri かどうかを判断できます。

if (substr($src, 0, 5) == 'data:')) {
    ... got a data uri ...
}

データ uri のように見えない場合は、URL であると見なして、そのように扱っても安全です。

于 2013-08-12T15:26:46.073 に答える
0

これらが 2 つの可能性しかない場合は、次のようなことができます。

$string = 'xxx';
$part = substr($string, 0, 6); //if an image, it will extract upto http(s):

if(strstr($part, ':')) {
    //image
} else {
    //not an image
}

説明:上記のコードは、入力がbase64文字列または画像のいずれかであると想定しています。画像の場合は、プロトコル情報 ( を含む:) を含める必要があります。これは、base64 でエンコードされた文字列では許可されていません。

于 2013-08-12T15:25:26.330 に答える