使用 XPath 将文本打印到一个元素 - PHP
Posted
技术标签:
【中文标题】使用 XPath 将文本打印到一个元素 - PHP【英文标题】:Print text up to an element with XPath - PHP 【发布时间】:2021-03-29 19:16:09 【问题描述】:您好,我有一个元素 <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&tradinv=avvertire&lang=IT_">avvertire</a>, <br> <br>(eng) = <a href="Coniugazione_latino.asp?verbo=moneo&tradinv=warn&lang=EN_">warn</a>, <a href="Coniugazione_latino.asp?verbo=moneo&tradinv=advise&lang=EN_">advise</a>, <a href="Coniugazione_latino.asp?verbo=moneo&tradinv=presage&lang=EN_">presage</a>, <br><br>(esp) = <a href="Coniugazione_latino.asp?verbo=moneo&tradinv=avisar&lang=ES_">avisar</a>, <<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 是字符串
我希望你能帮助我,对不起我的英语
【问题讨论】:
【参考方案1】:问题在于,当您运行query()
时,这将为您提供一组 DOM 元素,而不是内容的实际 HTML。
所以$contenuto_paradigma
将是匹配节点的列表,您只需要第一个匹配项(如果需要更多匹配项,可以遍历它们)。然后使用$dom->saveHTML()
导出此节点(<td>
节点)的 HTML(注意 $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>
标签)。
【讨论】:
我试过你的代码,在 $dom_td= new DOMDocument(); 之前添加(我在 $dom_td 中更改了变量 $dom 的名称)但我有错误:未捕获的 DOMException:错误的文档错误 您需要使用与创建 DOMXPath 对象相同的 DOM。以上是关于使用 XPath 将文本打印到一个元素 - PHP的主要内容,如果未能解决你的问题,请参考以下文章