1

我将此字符串提取到数据库中:

$str = "<ol><li><span style=&quot;color:rgb(255,153,0);&quot;><b style=&quot;color:rgb(255,153,0);&quot;>Maximum</b></span> authority</li><li>Innovative response</li><li>Freedom<br></li></ol>";

我想将字符串拆分为一个数组,将里面的值<li>作为值并提出如下内容:

[0] => <span style=&quot;color:rgb(255,153,0);&quot;><b style=&quot;color:rgb(255,153,0);&quot;>Maximum</b></span> authority
[1] => Innovative response
[2] => Freedom<br>

但是,我只提出了这个解决方案:

$xml = new DOMDocument();
$xml->loadHTML($str);
foreach($xml->getElementsByTagName('li') as $li)
  $final_list[] = $li->nodeValue;

// Results
[0] => Maximum authority
[1] => Innovative response
[2] => Freedom

它去除了里面的 HTML 标签,<li>这不是我的预期结果。有什么想法可以改进吗?

4

2 回答 2

0

请参考http://www.php.net/manual/en/domdocument.savexml.php你需要使用 saveXML 来保留 HTML

$final_list[] = htmlentities($xml->saveXML($li), ENT_QUOTES, 'UTF-8')
于 2013-04-02T09:19:40.170 回答
0

检查此解决方案:

$xml = new DOMDocument();
$xml->loadHTML($str);
$final_list = array();
foreach($xml->getElementsByTagName('li') as $li) {
    $tmp_dom = new DOMDocument();
    $tmp_dom->appendChild($tmp_dom->importNode($li, true));
    $h = trim($tmp_dom->saveHTML());
    $final_list[] = substr($h, strpos($h,'>')+1, -(strlen($li->nodeName)+3));
}
于 2013-04-02T09:25:00.290 回答