如何使用Simple HTML Dom Parser处理页面抓取错误

时间:2011-06-21 02:54:36

标签: php parsing dom codeigniter web-scraping

与Facebook类似,我正在构建一个允许用户发布链接的应用程序。

用户填写输入字段中的链接,控制器返回

Title
Link
Meta description
Images (as thumbnails)

到视图。

这是控制器代码:

    $url = $this->input->post('posts_link');

    if (!empty($url)) {

        $html = file_get_html($url);

        foreach ($html->find('img') as $element) {

          $src = "";

          $src = $element->src;

            if (preg_match("/\.jp[e]?g$/i", $src)) {

            $images[] = $src;

            }
        }

        $data['posts_link'] = $url;
        $data['images']     = $images;
        $data['title']          = $html->find('title', 0)->plaintext;
        $data['meta']           = get_meta_tags($url);

我遇到的问题是没有图像,没有标题或没有描述(单独或组合)。

我正在使用codeigniter,它会在视图上抛出几个错误,我宁愿压制它。

如果DOM解析器没有返回标题/图像/描述,是否有最佳做法可以抑制这些错误或放置空变量?

例如我试过

$data['images'] = $images ? $images : '';

但它无法解决我的问题。

有什么建议吗?

感谢。

3 个答案:

答案 0 :(得分:1)

您需要在使用变量之前预先定义变量。对于$images,它将是

$images = array();

if (!empty($url)) {等之后

答案 1 :(得分:0)

if (array_key_exists('images', $data)) {
    // display the image
    }
else
{

    //set a default image, etc
}

或类似isset

的内容

答案 2 :(得分:-1)

您可以使用@符号来抑制错误。即。

 @     $data['images']     = $images;