问:根据任务,我需要替换 <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对于这样一个简单的示例,但是如果您以后需要更明确地说明需要更换哪个节点,它很容易扩展。
关于php - 使用 HTML DOM 替换第一个 <p> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45072857/