PHP:检查url上是否存在文件

时间:2014-03-15 23:09:35

标签: php jquery html optimization http-headers

我有一个小问题需要检查3个可能的文件路径中哪一个与正确的图像有关。我过去总是使用get_headers - 但是在任何给定的分页上最多可以加载100个图像 - 因此在最坏的情况下可能会有300个get_headers,而且在我的大学服务器空间中它会非常缓慢。

但是对于任何给定的steam_id,可能存在2个可能的文件路径中的图像。这意味着如果我只包括所有三个网址并使用Jquery来隐藏错误,大约一半的结果我最终会得到2张图片(这比我目前所做的更公平,但至少get_headers方法看起来很好。

这是我到目前为止所使用的内容:

//Use Header Response to determine which img to use
$url1 = 'http://cdn4.steampowered.com/v/gfx/apps/' . $row -> steam_id_clean . 'header_292x136.jpg';
$url2 = 'http://cdn4.steampowered.com/v/gfx/apps/' . $row -> steam_id_clean . 'header.jpg';
$header_response = get_headers($url1, 1);
if (strpos($header_response[0], "404") !== false) {
    // File does not exist at url1 - recurse.
    $header_response = get_headers($url2, 1);
    if (strpos($header_response[0], "404") !== false) {
        //File does not exist at URL - Therefore must be at URL3
        echo '<img src = "http://cdn4.steampowered.com/v/gfx/subs/' . $row -> steam_id_clean . 'header.jpg" style="width: 200px; height: auto;" >';
    } else {
        //File exists at URL2
        echo '<img src = "http://cdn4.steampowered.com/v/gfx/apps/' . $row -> steam_id_clean . 'header.jpg" style="width: 200px; height: auto;" >';
    }
} else {
    // File exists at URL1
    echo '<img src = "http://cdn4.steampowered.com/v/gfx/apps/' . $row -> steam_id_clean . 'header_292x136.jpg" style="width: 200px; height: auto;" >';
}

这个数据太动态了 - 所以我不能写一个刮去抓图像。任何比get_headers更好的方法的建议将不胜感激。我不能在我的大学服务器上访问curl(不幸的是)!

1 个答案:

答案 0 :(得分:0)

你可以做一个while循环并在while循环中插入if语句(而while循环将遍历所有图像URL的数组吗?)。

这就是我要做的事。