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

この解決策を確認してください:

$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 に答える
0

http://www.php.net/manual/en/domdocument.savexml.phpを参照してください。HTML を保持するには、saveXML を使用する必要があります。

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