Php 如何在给定元素下按id搜索?
如何通过Php 如何在给定元素下按id搜索?,php,dom,xpath,Php,Dom,Xpath,如何通过id搜索出现在另一个DOMElement下的DOMElement $element->ownerDocument->getElementById('my-id'); …将搜索整个文档。我只希望在元素出现在$element下时返回该元素,非常简单: 基本上,它会在上下文节点下方的树中的任意位置(此处为$element)查找id属性等于my id…的元素,非常简单: 基本上,它会在上下文节点下方的树中的任意位置(此处为$element)查找id属性等于my id…的元素。您可以使用XPat
id
搜索出现在另一个DOMElement
下的DOMElement
$element->ownerDocument->getElementById('my-id');
…将搜索整个文档。我只希望在元素出现在$element
下时返回该元素,非常简单:
基本上,它会在上下文节点下方的树中的任意位置(此处为$element
)查找id
属性等于my id
…的元素,非常简单:
基本上,它会在上下文节点下方的树中的任意位置(此处为
$element
)查找id
属性等于my id
…的元素。您可以使用XPath执行此操作。以下部件将具有该元件(典型的小于120 chars的一个衬里):
如果找不到,您将得到NULL
。这基本上就是使用@ircmaxell在回答中建议的简写形式:
descendant::*[@id="my-id"]
.//*[@id="my-id"]
上下文节点是相同的,在simplexml xpath中,它自动连接到上下文节点,在DOMXPath中,您需要指定它
哦,刚才看到了,是您在这个答案中编辑了xpath,所以重要的部分是当绑定到上下文节点时,在双斜杠/
之前使用点
,否则斜杠将再次指向根,点阻止了这一点(与在文件系统中指定相对文件路径相比)
另见:
您可以使用XPath实现这一点。以下部件将具有该元件(典型的小于120 chars的一个衬里): 如果找不到,您将得到
NULL
。这基本上就是使用@ircmaxell在回答中建议的简写形式:
descendant::*[@id="my-id"]
.//*[@id="my-id"]
上下文节点是相同的,在simplexml xpath中,它自动连接到上下文节点,在DOMXPath中,您需要指定它
哦,刚才看到了,是您在这个答案中编辑了xpath,所以重要的部分是当绑定到上下文节点时,在双斜杠/
之前使用点
,否则斜杠将再次指向根,点阻止了这一点(与在文件系统中指定相对文件路径相比)
另见:
XPath是你的选择吗?@RolandoIsidoro是@Benjamin仅供参考,不确定该用户是否知道…@HamZa我听说了phpQuery,但这不是我现在的选择!XPath是你的选择吗?@RolandoIsidoro是@Benjamin仅供参考,不确定该用户是否知道…@HamZa我听说了phpQuery,但这不是我现在的选择!实际上,XPath表达式中存在语法错误,它返回了
$element
之外的元素。我已经冒昧地用现在适合我的代码更新了你的答案!实际上,XPath表达式中存在语法错误,它返回了$element
之外的元素。我已经冒昧地用现在适合我的代码更新了你的答案!
descendant::*[@id="my-id"]
.//*[@id="my-id"]