下面的脚本应该在字符串中找到“最佳匹配”时结束,但即使我知道最终发现脚本仍在运行。请帮我修复我的错误。
$end = "1";
while ($end != 2) {
foreach($anchors as $a) {
$i = $i + 1;
$text = $a->nodeValue;
$href = $a->getAttribute('href');
//if ($i<80) {
//if (strpos($item, ".$array.") == false) {
//}
if (strpos($text, "best match") == true) {
$end = "2";
}
if (strpos($text, "by owner") === false) {
if (strpos($text, "map") === false) {
if ($i > 17) {
echo "<a href =' ".$href." '>".$text."</a><br/>";
}
}
}
}
//$str = file_get_contents($href);
//$result = (substr_count(strip_tags($str),"ipod"));
//echo ($result);
}
答案 0 :(得分:0)
问题是嵌套循环。当您找到“最佳匹配”时,您还需要结束foreach循环。尝试:
if (strpos($text, "best match") == true) {
$end = 2;
break; # Terminate execution of foreach loop
}
答案 1 :(得分:0)
在strpos
中,您与 true 进行比较,这是错误的。
此外,在thas if 语句中,您应该打破foreach和while循环。
这是正确的代码:
<?php
while ($end != 2) {
foreach($anchors as $a) {
$text = $a->nodeValue;
$href = $a->getAttribute('href');
if (strpos($text, "best match") !== false) {
$end = "2";
break 2;
}
if (strpos($text, "by owner") === false) {
if (strpos($text, "map") === false) {
if ($i > 17) {
echo "<a href =' ".$href." '>".$text."</a><br/>";
}
}
}
}
}