header('Content-Type: text/html; charset=utf-8');
include 'simple_html_dom.php';
$html = file_get_html('http://www.wettpoint.com/results/soccer/uefa/uefa-cup-final.html');
$cells = $html->find('table[class=gen] tr');
foreach($cells as $cell) {
$pre_edit = $cell->plaintext . '<br/>';
echo $pre_edit;
}
$pos = strpos($pre_edit, "Tennis");
var_dump($pos);
if ($pos == true) {
echo "string found!";
}
else
{
echo "string not found";
}
当我搜索字符串“Tennis”时,PHP返回“找不到字符串”。如果我搜索属于last iteration of the foreach with length=149的字符串(忽略$ pre_edit var的前五行),它只返回“找到的字符串”。你能否就如何解决这个问题给我一些建议?谢谢!
答案 0 :(得分:2)
您没有在foreach()
循环中进行搜索,因此您只能 EVER 获取循环检索到的最后一个节点。
如果您正确缩进代码,您会看到问题所在。它应该是:
foreach($cells as $cell) {
$pre_edit = $cell->plaintext . '<br/>';
echo $pre_edit;
$pos = strpos($pre_edit, "Games");
var_dump($pos);
if ($pos !== false) {
echo "string found!";
} else {
echo "string not found";
}
}
现在你有了:
foreach($cells as $cell) {
blah blah
}
if (strpos(...))) {
blah blah
}
另请注意,我已将$pos == true
更改为$pos !== false
。如果您要搜索的字符串位于字符串的开头,则strpos可以并且将返回0
。但在PHP中,0 == false
为TRUE,但0 === false
为FALSE。您需要使用严格相等测试来比较类型AND值,以检查strpos在搜索失败时返回的布尔值FALSE。