gpt4 book ai didi

php - DOM文档 : how to get inner HTML as Strings separated by line-breaks?

转载 作者:搜寻专家 更新时间:2023-10-31 21:16:36 24 4
gpt4 key购买 nike

<blockquote>
<p>
2 1/2 cups sweet cherries, pitted<br>
1 tablespoon cornstarch <br>
1/4 cup fine-grain natural cane sugar
</p>
</blockquote>

您好,我想获取“p”标签内的文本。你看到有三个不同的行,我想在每行添加一些额外的文本后分别打印它们。这是我的代码块

    $tags = $dom->getElementsByTagName('blockquote');
foreach($tags as $tag)
{
$datas = $tag->getElementsByTagName('p');
foreach($datas as $data)
{
$line = $data->nodeValue;
echo $line;
}
}

主要问题是 $line 包含 'p' 标签内的全文,包括 'br' 标签。我怎样才能分开这三行来分别对待它们??

提前致谢。

最佳答案

您可以使用 XPath 来做到这一点。您所要做的就是查询文本节点。不需要爆炸或类似的东西:

$dom = new DOMDocument;
$dom->loadHtml($html);
$xp = new DOMXPath($dom);
foreach ($xp->query('/html/body/blockquote/p/text()') as $textNode) {
echo "\n<li>", trim($textNode->textContent);
}

非 XPath 替代方案是迭代 P 标记的子节点,并且仅在它们是 DOMText 节点时才输出它们:

$dom = new DOMDocument;
$dom->loadHtml($html);
foreach ($dom->getElementsByTagName('p')->item(0)->childNodes as $pChild) {
if ($pChild->nodeType === XML_TEXT_NODE) {
echo "\n<li>", trim($pChild->textContent);
}
}

两者都会输出 ( demo )

<li>2 1/2 cups sweet cherries, pitted
<li>1 tablespoon cornstarch
<li>1/4 cup fine-grain natural cane sugar

另见 DOMDocument in php用于解释节点概念。在使用 DOM 时理解这一点至关重要。

关于php - DOM文档 : how to get inner HTML as Strings separated by line-breaks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7222453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com