我如何检查如果我在PHP HTML Dom中获取空文件_get_html?

时间:2015-10-23 11:48:47

标签: php json

我通过使用PHP HTML DOM访问链接获得JSON数据,但有时,我得到一个空页面,所以我想知道如何才能真正检查页面是否为空,以便我可以跳过它通过在for循环中使用continue 我正在检查它:

if (empty($jsondata)) 

但即使页面返回空白,我总是会TRUE永远不会变错

这是我的代码:

 <?php
    $prefix = $_POST['prefix'];
    $start_product = $_POST['start_product'];
    $end_product = $_POST['end_product'];

    set_time_limit(0);

    for ($i=$start_product; $i <= $end_product; $i++) {

        include('simple_html_dom.php');

        $prefix ="00";
        $i= "11";

        $jsondata = file_get_html('http://www.ewallpk.com/index.php?controller=search&q=A'.$prefix.$i.'&limit=10&timestamp=1445547668758&ajaxSearch=1&id_lang=1');

        if (!empty($jsondata)) {

            $data = json_decode($jsondata, true);

            $product = file_get_html($data[0]["product_link"]);

            $product_name= "";
            foreach($product->find('div[id=pb-left-column] h1') as $element) {
                $product_name.=$element->innertext . '<br>';
            }

            $product_name = explode("_", $product_name);
            $count = count($product_name);

            if ($count < 3) {
                $product_name=$product_name[0];
            } else {
                $product_name = "Error";
            }

            $product_description= "";
            foreach($product->find('div[id=short_description_content]') as $element) {
                $product_description.=$element->plaintext . '<br>';
            }

            $product_price= "";
            foreach($product->find('p[class=our_price_display] span') as $element) {
                $product_price.=$element->innertext . '<br>';
            }

            $image_link= "";
            foreach($product->find('img[id=bigpic]') as $element) {
                $image_link.=$element->src;
            }

            $content = file_get_contents($image_link);
            file_put_contents('item_images/A'.$prefix.$i.'.jpg', $content);

            echo "<strong>Product No : </strong> A".$prefix.$i."</br>";
            echo "<strong>Product Name : </strong>".$product_name."</br>";
            echo "<strong>Product Description : </strong>".$product_description;
            echo "<strong>Product Price : </strong>".$product_price."</br></br></br>";
        } else {
            continue;
        }
    }
?>

1 个答案:

答案 0 :(得分:2)

你可能在空响应中得到一些空格,所以在测试之前将其修剪掉。您还应该使用file_get_contents,因为响应不是HTML。

$jsondata = file_get_contents('http://www.ewallpk.com/index.php?controller=search&q=A'.$prefix.$i.'&limit=10&timestamp=1445547668758&ajaxSearch=1&id_lang=1');
$jsondata = trim($jsondata);
if (!empty($jsondata)) {
    ...
}