gpt4 book ai didi

php - 使用 HTML DOM 替换第一个

标签

转载 作者:可可西里 更新时间:2023-10-31 23:45:10 24 4
gpt4 key购买 nike

问:根据任务,我需要替换 <p>仅在第一次出现时使用 h4 标记使用 HTML DOM .

我尝试使用 this question但不能成功

我的代码,

HTML

<div class="productabcont">
<div class="protabtop">
<div class="protabtopright">
<p>Combed compact yarn</p> <!-- This i want to replace with <h4> tag. -->
<p>Description line 1</p>
<p>Description line 2</p>
</div>
</div>
</div>

PHP

<?php    
$dom = new DOMDocument();
$dom->loadHTML($myHTML);
$dom->getElementsByTagName('p')[0]->outertext = '<h4>'.$value.'</h4>';
$dom->saveHTML();
?>

要求的输出

<div class="productabcont">
<div class="protabtop">
<div class="protabtopright">
<h4>Combed compact yarn</h4> <!-- This is replaced with <p> tag. -->
<p>Description line 1</p>
<p>Description line 2</p>
</div>
</div>
</div>

提前致谢。

最佳答案

在使用DOM* 对象时没有outerHTML。但是您可以使用所有其他可用的工具。

例如:

<?php

$html = <<<HTML
<div class="productabcont">
<div class="protabtop">
<div class="protabtopright">
<p>Combed compact yarn</p> <!-- This i want to replace with <h4> tag. -->
<p>Description line 1</p>
<p>Description line 2</p>
</div>
</div>
</div>
HTML;

$value = 'some headline';

$dom = new DOMDocument();
$dom->loadHTML($html);

$q = new DOMXPath($dom);

// find first p tag
foreach ($q->query('//p[1]') as $p) {
// replace it with newly created element
$p->parentNode->replaceChild($dom->createElement('h4', $value), $p);
}

echo $dom->saveHTML();

当然你不需要使用 xpath对于这样一个简单的示例,但是如果您以后需要更明确地说明需要更换哪个节点,它很容易扩展。

演示:https://3v4l.org/4Hj1e

关于php - 使用 HTML DOM 替换第一个 <p> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45072857/

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