2012-10-13 37 views
0

我使用簡單的html DOM來解析提交的html文檔中的不同元素。我一直在想如何檢查以下內容用簡單的html dom收集http-equiv

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

我試過使用。

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

我收到錯誤使用未定義的常量equiv。由於 - 符號,我有什麼特殊的方式來形成聲明嗎?

回答

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的當量

1

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

爲什麼不直接找到包含「refresh」的http-equiv attribut元元素?

從示例頁面這應該工作:$html->find('div[id=hello]', 0)->innertext = 'foo';

讓我覺得$html->find('meta[http-equiv=refresh]');應該找到它具有HTTP的當量與元素「刷新」內容爲好。

0

試試這個。

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

其中@沉默Notice: undefined index警告,在該文件做的情況下不包含meta:http-equiv