字符串挑战

时间:2012-03-05 13:42:04

标签: php string preg-replace domdocument

我有一个包含HTML结构的字符串:

<p> ... </p>
<p> .... <a> .... </a></p>
<div id="quick_preview">
<p> .... </p>
</div>
<p> ... </p>

我想要做的只是在<description>标记之后在div中注入quick_preview个标记p。像这样的东西:

<p> ... </p>
<p> .... <a> .... </a></p>
<div id="quick_preview">
  <description>
    <p> .... </p>
  </description>
</div>
<p> ... </p>

我使用了很多技术,例如domdocument或字符串处理,但找不到合适的解决方案。

1 个答案:

答案 0 :(得分:1)

这是一个粗略的示例,可以帮助您开始使用PHP's DOM functions。该示例需要扩展以检查错误等,但确实有效。

$ php test.php 
<?xml version="1.0"?>
<root><p>First p</p><p>Another p<a>a link</a></p><div id="quick_preview"><description><p>Third p </p></description></div><p>Last p</p></root>

以下是代码:

<?php

$xml = "<root><p>First p</p><p>Another p<a>a link</a></p><div id='quick_preview'><p>Third p </p></div><p>Last p</p></root>";

$doc = DOMDocument::loadXML($xml);

$xpath = new DOMXPath($doc);

$query = '//div';
$entries = $xpath->query($query);

$entry = $entries->item(0);

$new = $doc->createElement("description");
$new->appendChild($entry->firstChild);
$entry->appendChild($new);
echo $doc->saveXML();