我有以下代码,它假设循环一组nodeValues并在节点上停止,如果它以特定字母开头。我对循环很新,但认为下面的代码可以工作..我做错了什么?
$file = $DOCUMENT_ROOT. "http://website.com";
$doc = new DOMDocument();
@$doc->loadHTMLFile($file);
$elements = $doc->getElementsByTagName('td');
$i=0;
while (trim(substr($elements->item($i)->nodeValue, 0, 3)) !== "MON" | "TUE"){
echo $elements->item($i)->nodeValue;
$i=$i+1;
};
答案 0 :(得分:0)
您的while
条件中存在一些重要的逻辑和操作符问题。 |
是一个按位OR比较,看起来你真的想要使用逻辑AND &&
,因为只要节点值不等于MON或TUE,你的循环就需要继续:
我建议将nodeValue存储在while循环之外,并比较变量的可读性:
$i = 0;
// Store the first node value ahead of the loop
$currentNode = trim(substr($elements->item($i)->nodeValue, 0, 3));
// Test it's neither MON nor TUE
// That is, "not equal to 'MON' *AND* not equal to 'TUE'"
while ($currentNode !== "MON" && $currentNode !== "TUE") {
echo $elements->item($i)->nodeValue;
$i=$i+1;
// Then reassign $currentNode after $i increments
$currentNode = trim(substr($elements->item($i)->nodeValue, 0, 3));
}