0

我正在使用 Simple html DOM 从提交的 html 文档中解析不同的元素。我一直在试图弄清楚如何检查以下内容

<meta http-equiv="refresh" content="100">

我试过用。

foreach($html->find('meta') as $element){
    if($element->http-equiv=='refresh'){ refreshFound(); }
}

我收到错误 Use of undefined constant equiv。由于 - 符号,我必须以一种特殊的方式来形成语句吗?

4

3 回答 3

1

它应该是$element->attr

foreach ( $html->find('meta') as $element ) {
    var_dump($element->attr);
}

输出

array
  'http-equiv' => string 'refresh' (length=7)
  'content' => string '100' (length=3)
array
  'http-equiv' => string 'Content-Type' (length=12)
  'content' => string 'text/html; charset=utf-8' (length=24)
array
  'name' => string 'robots' (length=6)
  'content' => string 'noindex' (length=7)

简单检查

foreach ( $html->find('meta') as $element ) {
    foreach ( $element->attr as $key => $value ) {
        if ($key == "http-equiv" && $value == 'refresh') {
            echo "FOUND";
        }
    }
}

输出

FOUND 

笔记*

如果你$element->attr["http-equiv"]直接使用它会产生下面的错误,因为网站有时没有http-equiv

注意:未定义索引:http-equiv

于 2012-10-13T18:53:30.867 回答
1

你正在做减法:$element->http minus equiv

为什么不直接找到带有“刷新”的 http-equiv 属性的元元素?

从示例页面这应该可以工作:$html->find('div[id=hello]', 0)->innertext = 'foo';

让我认为$html->find('meta[http-equiv=refresh]');应该找到具有“刷新”内容的 http-equiv 的元素。

于 2012-10-13T18:54:26.760 回答
0

试试这个。

if(@$element->attr['http-equiv'] == 'refresh') { 
    refreshFound(); 
}

如果@文档包含. Notice: undefined index_meta:http-equiv

于 2012-10-13T18:55:46.813 回答