Php 如何使用简单的HTML Dom解析器处理页面抓取错误
与Facebook类似,我正在构建一个允许用户发布链接的应用程序 用户在输入字段中填写链接,控制器返回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 (
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();