if_exists返回false negatives远程url

时间:2013-07-03 16:58:08

标签: php api file-exists

我正在为使用wowarmoryapi的朋友设计一个魔兽世界公会网站。 但是我目前正在做一个会员名单,并不是所有会员(较低级别等)都有图像。 所以我想我会过滤掉那些返回虚假图像并在其位置显示“blankportrait.png”的文件。

这是我正在使用的代码,(它在本地网站上,所以我不担心链接)

            $portrait = $member['character']['thumbnailURL'];
        $noportrait = "wp-content/themes/the-confederation/inc/images/blankportrait.png";
            if (file_exists($portrait)) {
                $portrait;
            } else {
                $portrait = $noportrait;
            };
        ?>
            <div class="member">
            <div class="memberportrait"><img src="<?php echo $portrait ?>"/></div>

2 个答案:

答案 0 :(得分:0)

file_exists应仅用于本地或网络驱动器。在您的情况下,您想要查看字符串是否存在(或非空)。您可以执行以下操作:

$portrait = $member['character']['thumbnailURL'];
$noportrait = "wp-content/themes/the-confederation/inc/images/blankportrait.png";
if (empty($portrait)) {
  $portrait = $noportrait;
}

此外,如果您使用的是wordpress,则可能需要将$noportrait设置为包含get_stylesheet_directory_uri() ..例如:

$noportrait = get_stylesheet_directory_uri()."/inc/images/blankportrait.png";

答案 1 :(得分:0)

OP解决方案。

使用Curl的解决方案:

$noportrait = get_stylesheet_directory_uri()."/inc/images/blankportrait.png";
$h = curl_init($member['character']['thumbnailURL']);
curl_setopt($h, CURLOPT_RETURNTRANSFER, true);
$r = curl_exec($h);
$http_code = curl_getinfo($h, CURLINFO_HTTP_CODE);
if($http_code == 404)
{
    $portrait = $noportrait;
}
else
{
    $portrait = $member['character']['thumbnailURL'];
}
curl_close($h);