Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 XPath选择特定节点后的文本_Php_Xpath_Web Scraping - Fatal编程技术网

Php XPath选择特定节点后的文本

Php XPath选择特定节点后的文本,php,xpath,web-scraping,Php,Xpath,Web Scraping,您尝试的此XPath将只返回元素,不包括您似乎感兴趣的文本节点: $email = $xmlPageXPath->query('//*[preceding-sibling::h3[text()="Contact Information"]]'); $tag="contactinformation"; $XML.=createXMLtags($tag,nodelist2string($email)); 您可以使用text()来选择文本节点,例如: //*[preceding-sibling

您尝试的此XPath将只返回元素,不包括您似乎感兴趣的文本节点:

$email = $xmlPageXPath->query('//*[preceding-sibling::h3[text()="Contact Information"]]');
$tag="contactinformation";
$XML.=createXMLtags($tag,nodelist2string($email));
您可以使用
text()
来选择文本节点,例如:

//*[preceding-sibling::h3[text()="Contact Information"]]

搜索标题,并返回下面的第一个文本节点

//h3[.=“联系信息”]/以下同级::text()[1]
如果有什么东西包裹着这两个标签,例如

//text()[preceding-sibling::h3[.="Contact Information"]]

嗯,我想你的HTML被呈现出来,而不是显示为代码…修复了它,请在代码之前使用空格来正确格式化它。这段代码是否在另一个节点内?这部分文本是从word复制和粘贴的,这意味着文本内带有多个标记。例如是否可以在“”到达之前保留所有文本?是的,这是可能的。将模式应用于您的问题应该相当容易。我看到了主题,但无法应用它。这段代码正在运行“//text()[preference::h3[.=“Contact Information”]]”,但它也会获取页面的其余部分。我想在“”到达时停止它。谢谢,您需要做的是测试
是否在文本节点之后:
//text()[previous::h3[.=“Contact Information”]和following:div[@class=“clr”]]
。这修复了
//text()[previous::h3[.=“Contact Information”]和following::h3[text()=“General”]
这段代码正在工作'//text()[previous::h3]=“联系人信息”]],但它也会获取页面的其余部分。我想在“”到达时停止它。如果我添加前面的同级,则它会获取一半文本,因为文本是从word复制的,并且具有html标记。请检查Jens Erat注释。添加条件
和以下内容:div[@class=“clr”]
似乎可以解决这个问题。如果这不是你想要的,我建议编辑这个问题(或者更好,发布一个新问题),并包括演示问题的示例html。
//text()[preceding-sibling::h3[.="Contact Information"]]
<div>
  <h3>Contact Information</h3> To Apply : Please send your CV and cover
  letter to DAIIDEANEW2012@gmail.com include Grants Manager - Jalalabad
  in the subject line of the application.
</div>