2011-06-29 124 views
1

我使用簡單的HTML DOM解析器HTML DOM和strpos

foreach($html->find('a') as $element) { 
    //produce results 
    if(strpos($element, 'string')) { 
     $myarray[] = $element->href; 
    } 
} 

VS

foreach($html->find('a') as $element) { 
    //not producing result 
    if(strpos($element->href, 'string')) { 
     $myarray[] = $element->href; 
    } 
} 

爲什麼當我加入strpos起到元素 - > HREF,甚至從來都沒有檢測到的單詞序列壽href有字符串關鍵字。

+0

任何機會,你可以發佈一些你正在解析的HTML(特別是有問題的href的位)? –

回答

3

strpos('monkey', 'm')將返回00將被PHP視爲錯誤。如果$element->hrefstring開頭,則不會進入if。

使用

strpos(..., ...) === false 

strpos(..., ...) !== false 
+0

ahhh我找到了原因,我試過===真正的因此相同,所以它應該是!==假的地方,它的工作完美。謝謝。 – newinhere

0

除了Sjoerd提到什麼(做全等測試),該問題可能是你傳遞一個對象入strpos,而不是串。這應該工作:

foreach($html->find('a') as $element) { 
    //not producing result 
    if(strpos((string) $element->href, 'string') !== false) { 
     $myarray[] = $element->href; 
    } 
}