📜  验证是否正确的图像 url php (1)

📅  最后修改于: 2023-12-03 15:28:59.170000             🧑  作者: Mango

验证是否正确的图像 URL

在开发 Web 应用程序时,通常需要使用图像来丰富用户体验。但是,有时我们需要检测输入的图像 URL 是否正确,以避免在加载图像时出现错误或缺失。

此处介绍几种验证图像 URL 是否有效的方法。

1. 使用 PHP 函数 getimagesize()

PHP 中自带的 getimagesize() 函数可以返回图像的大小和 MIME 类型。如果该函数返回 false,则说明该 URL 不是有效的图像 URL。

示例代码:

$url = 'https://example.com/images/myPic.jpg';
$imageInfo = @getimagesize($url);

if ( ! $imageInfo ) {
  // URL 不是有效的图像 URL
} else {
  // URL 是有效的图像 URL
}

需要注意的是,getimagesize() 函数中的 @ 符号用于屏蔽可能的错误信息输出。

2. 使用 PHP 函数 fopen()

通过 PHP 中的 fopen() 函数尝试打开图像 URL,如果返回 false,则说明该 URL 不是有效的图像 URL。

示例代码:

$url = 'https://example.com/images/myPic.jpg';
$file = @fopen($url, 'r');

if ( ! $file ) {
  // URL 不是有效的图像 URL
} else {
  fclose($file);
  // URL 是有效的图像 URL
}

同样,@ 符号用于屏蔽错误信息。

3. 使用第三方组件

也可以使用第三方组件来验证图像 URL 是否有效。例如,GuzzleHttp 是一个流行的 PHP HTTP 客户端库,可以使用它的 head 方法请求 URL 并检查响应头信息。

示例代码:

require_once '/path/to/vendor/autoload.php';

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

$url = 'https://example.com/images/myPic.jpg';

$client = new Client();

try {
  $response = $client->head($url);

  $contentType = $response->getHeader('Content-Type');
  if (strpos($contentType[0], 'image/') === false) {
    // URL 不是有效的图像 URL
  } else {
    // URL 是有效的图像 URL
  }

} catch (RequestException $e) {
  // URL 不是有效的图像 URL
}
总结

以上是几种验证图像 URL 是否有效的方法。使用 getimagesize()fopen() 函数可以有效地检测图像 URL,而使用第三方组件可以通过检查响应头信息进一步确认 URL 是否为有效的图像 URL。根据需要选择合适的方法使用即可。