使用 XPath 将文本打印到元素 - PHP

Print text up to an element with XPath - PHP

提问人:Borja 提问时间:12/19/2020 更新时间:12/19/2020 访问量:16

问:

您好,我有一个元素,我想保存/打印内容,直到秒 o 可能吗?<td><br

这是html:

<td>
    <span class="HTML_ELM">Coniugazione di: </span>
    <span class="style11">
        <span class="HTML_ELM">moneo</span>
    </span>, monĕs, monui, monitum, monēre<br> // **STOP HERE MY FRIENDS !**
    <span class="HTML_ELM"> coniugazione: : </span>2 - transitivo - attiva<br>
    <span class="HTML_ELM">   significato: </span>ammonire, <a href="Coniugazione_latino.asp?verbo=moneo&amp;tradinv=avvertire&amp;lang=IT_">avvertire</a>,&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;<br>(eng) = <a href="Coniugazione_latino.asp?verbo=moneo&amp;tradinv=warn&amp;lang=EN_">warn</a>,&nbsp;&nbsp;&nbsp; <a href="Coniugazione_latino.asp?verbo=moneo&amp;tradinv=advise&amp;lang=EN_">advise</a>,&nbsp;&nbsp;&nbsp; <a href="Coniugazione_latino.asp?verbo=moneo&amp;tradinv=presage&amp;lang=EN_">presage</a>,&nbsp;&nbsp;&nbsp;<br><br>(esp) = <a href="Coniugazione_latino.asp?verbo=moneo&amp;tradinv=avisar&amp;lang=ES_">avisar</a>,&nbsp;&nbsp;&nbsp;&lt;<br>
 </td>

我尝试使用:explode

 $query_paradigma = '//span[contains(@class, "style11")][1]/parent::td';        
 $contenuto_paradigma = $xpath->query($query_paradigma);
 $paradigma= explode("<br>",$contenuto_paradigma);
        
 print_r($paradigma[0]." <br>");
 print_r($paradigma[1]." <br>");

但是我有这个错误:explode() 期望参数 2 是字符串

我希望你能帮助我,对不起我的英语

php 解析 dom xpath html-解析

评论


答:

1赞 Nigel Ren 12/19/2020 #1

问题是当你运行时,这将给你一组DOM元素,而不是内容的实际HTML。query()

因此,将是一个匹配节点的列表,您只需要第一个匹配项(如果您想要更多,可以遍历它们)。然后导出此节点(节点)的 HTML(注意,这是文档的名称,因此请根据需要进行更改)。然后你可以从那里提取数据......$contenuto_paradigma<td>$dom->saveHTML()$dom

$query_paradigma = '//span[contains(@class, "style11")][1]/parent::td';
$contenuto_paradigma = $xpath->query($query_paradigma);
$tdContent = $dom->saveHTML($contenuto_paradigma[0]);

$paradigma= explode("<br>",substr($tdContent, 4)););

(只是从头开始删除标签)。substr<td>

评论

0赞 Borja 12/19/2020
我尝试了您的代码,在 $dom_td= new DOMDocument() 之前添加;(我在 $dom_td 中更改了变量 $dom 的名称),但我有错误:未捕获的 DOMException:错误的文档错误
0赞 Nigel Ren 12/19/2020
您需要使用用于创建 DOMXPath 对象的相同 DOM。