Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DomCrawler筛选器XPath查询_Php_Symfony_Xpath_Domcrawler - Fatal编程技术网

Php DomCrawler筛选器XPath查询

Php DomCrawler筛选器XPath查询,php,symfony,xpath,domcrawler,Php,Symfony,Xpath,Domcrawler,我有一些html,如下所示: <html> <body> ... other html stuff ... <form method="post" action="goSomewhere"> <input type="hidden" value="something"> <input type="hidden" value="something2"> <table> <tr><td

我有一些html,如下所示:

<html>
<body> 
... other html stuff ...
<form method="post" action="goSomewhere">
    <input type="hidden" value="something">
    <input type="hidden" value="something2">
<table>
    <tr><td><input type="checkbox" name="123">Stuff 1</td></tr>
    <tr><td><input type="checkbox" checked name="456">Stuff 2</td></tr>
    <tr><td><input type="checkbox" name="789">Stuff 3</td></tr>
</body> 
</html>
这成功地过滤掉了特定的
内容,但问题是它只返回
内容。如您所见,还有其他
不在
中,我也需要它们


有人能帮我解答这个问题吗?谢谢

您正在寻找
//form//td[not(normalize-space()=“Stuff 2”)]/input |//input[not(祖先::表)]

谢谢!这似乎奏效了!你知道我怎样才能得到
表单
标签中的所有项目吗?由于某些原因,
输入
返回值似乎为空。实际上,我还需要
表/td
内容。我试着改变
。/form |//form[不是(祖先::form)]
,但它似乎没有任何作用。我不确定我是否理解。你能解释一下你错过了哪些节点吗?如果我对爬虫对象(包含所有输入)进行
打印,\r
,它会打印空对象。因此,我基本上是在改变我的原始请求:不是获取所有输入(减去带有“Stuff 2”名称的特定输入),而是获取
之间的所有内容。您可以使用
爬虫
类的
reduce()
方法,该方法接受用于过滤节点的回调。
$query = "//form//td[not(normalize-space() = 'Stuff 2')]";