Php 如何使用简单的HTML Dom解析器处理页面抓取错误

Php 如何使用简单的HTML Dom解析器处理页面抓取错误,php,parsing,dom,codeigniter,web-scraping,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 (

与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$图像:''

但这并不能解决我的问题

有什么建议吗


谢谢。

您可以使用@符号抑制错误。i、 e

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

或者类似于

在使用变量之前,您需要预定义变量。对于
$images
来说

$images = array();

就在
if(!empty($url)){
etc

之后,实际的问题是什么?我遇到的问题是没有图像、没有标题或没有描述(单独或组合)。我正在使用codeigniter,它在视图上抛出了几个错误,我宁愿抑制这些错误。@torr:什么错误?我们需要猜测?:0P-抱歉-未定义索引:描述,未定义变量:图像,是一些错误examples@torr:因此预定义它们
$images=array()$description='';
有史以来最糟糕的建议。你头疼吗?斩首吧,哈哈。我真的很想避免使用
@
这张$images的作品,但是如何解决
description
中未定义的索引错误?既然
$meta
本身就是一个数组,我就通过
$meta['description'检索描述]
在视图中,但如何在控制器中初始化此项?@torr:
如果(isset($meta['description']){//work with description}
您建议如何抑制类似这样的错误--
消息:文件获取内容(http://cia.gov)[函数.文件获取内容]:无法打开流:HTTP请求失败!
--某些没有
的网站似乎会中断
文件\u get\u内容
,无论我是直接运行该函数还是通过简单的Dom运行该函数Parser@torr:
无法打开流
与不存在的标题无关OK谢谢-在上找到此链接,以便可以帮助其他wi同一个问题——他在填充
$data
数组时遇到问题,而不是在读取时遇到问题:-S
$images = array();