PHP检查webp图像上是否存在文件无效

时间:2017-09-04 03:53:10

标签: php function webp

所以我试图检查从get_the_post_thumbnail_url()

检索到的网址上是否有网络图片格式

这不符合我的预期。 以下是我正在使用的代码:

if (!file_exists($thePostThumbUrl))
    $thePostThumbUrl = str_replace("_result.webp", "." . $ext, $thePostThumbUrl);

如果我回显拇指网址,则会以.webp格式获取正确的图像

echo $thePostThumbUrl . '<br/ >';

显示器:

图片网址+ _result.webp

我知道正在使用的PHP版本是PHP/5.6.30

3 个答案:

答案 0 :(得分:1)

好的,正如Akintunde建议的那样,file_exists函数不能使用图像的url。因此需要修改代码以改为使用服务器路径。

这段代码可以解决问题:

$ext = pathinfo($thePostThumbUrl, PATHINFO_EXTENSION);
$thePostThumbPath = str_replace("http://localhost", "", $thePostThumbUrl);
if (!file_exists($_SERVER['DOCUMENT_ROOT'] . $thePostThumbPath)) {
    $thePostThumbUrl = str_replace("_result.webp", "." . $ext, $thePostThumbUrl);
}

Thansk Akintunde指出我正确的方向:)

答案 1 :(得分:1)

我编写了一个函数,用于检查服务器上是否存在webp格式的给定图像:

function webpExists($img_src){
  $env = array("YOUR_LOCAL_ENV", "YOUR_STAGING_ENV", "YOUR_PROD_ENV");
  $img_src_webp = str_replace(array(".jpeg", ".png", ".jpg"), ".webp", $img_src);
  $img_path = str_replace($env, "", $img_src_webp);
  return file_exists($_SERVER['DOCUMENT_ROOT'] . $img_path);
}

答案 2 :(得分:0)

你需要在这种情况下使用CURL,因为它是一个URL。

示例:

function checkRemoteFile($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    // don't download content
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if(curl_exec($ch)!==FALSE)
    {
        return true;
    }
    else
    {
        return false;
    }
}