如何将输出转换为变量,以便我可以交叉引用它以查看它是否与我设置的另一个变量匹配
foreach ($nodes as $i => $node) {
echo $node->nodeValue;
}
我知道这是不正确的,但不会起作用,但是:
foreach ($nodes as $i => $node) {
$target = $node->nodeValue;
}
$match = "some text"
if($target == $match) {
// Match - Do Something
} else {
// No Match - Do Nothing
}
实际上这解决了我的问题,但也许不是正确的方法:
libxml_use_internal_errors(true);
$dom = new DomDocument;
$dom->loadHTMLFile("http://www.example.com");
$xpath = new DomXPath($dom);
$nodes = $xpath->query("(//tr/td/a/span[@class='newprodtext' and contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'adidas')])[1]");
foreach ($nodes as $i => $node) {
echo $node->nodeValue, "\n";
$target[0] = $node->nodeValue;
}
$match = "adidas";
if($target == $match) {
// Match
} else {
// No Match
}
答案 0 :(得分:1)
你的问题更多的是关于循环的一般理解,为数组赋值和使用 if 条件使用php而不是使用xpath。
$node
nodeValue
分配到$target
数组中的同一索引,$target
将永远只有一个值(最后一个)if
条件语句中,您要比较array
(或null
,如果$nodes
没有项目,那么您可能要声明{{ 1}}首先)反对字符串' adidas',这永远不会成真。你可能想做类似的事情:
$target
<强>更新强>
我看到这个xpath表达式是在另一个answer中给你的,可能已经匹配了,所以你只需要检查$matched = false;
$match = 'adidas';
foreach ($nodes as $i => $node) {
$nodeValue = trim(strip_tags($node->textContent));
if ($nodeValue === $match) {
$matched = true;
break;
}
}
if ($matched) {
// Match
} else {
// No Match
}
的{{3}}属性
$nodes