2013-10-11 99 views
0

我試圖將XML節點中的行轉換爲無序列表,但是我遇到了一些困難。在xml節點中保留換行符

就拿這個節點:

<test> 
     Line1 
     Line2 
     Line3 
</test> 

我想將它與PHP

<ul> 
     <li>Line1</li> 
     <li>Line2</li> 
     <li>Line3</li> 
</ul> 

變成這個我已經使用的DOMDocument和SimpleXML試過,但既不似乎保留換行符。當迴盪,節點值看起來像這樣:

Line1 Line2 Line3 

我也按順序嘗試explode具有包含每一行作爲元素的數組:

$lines = explode('\n', $node->nodeValue); 

但是,它只返回一個數組有一個元素,所以我不能用它創建一個無序列表。

有沒有簡單的方法來做到這一點?

謝謝。

回答

2

你會踢你自己。 '\n'應該是"\n"!這裏有一個完整的例子:

$Dom = new DOMDocument('1.0', 'utf-8'); 
$Dom->loadXML(
'<test> 
    Line1 
    Line2 
    Line3 
</test>'); 

$value = $Dom->documentElement->nodeValue; 
$lines = explode("\n", $value); 
$lines = array_map('trim', $lines); // remove leading and trailing whitespace 
$lines = array_filter($lines); // remove empty elements 

echo '<ul>'; 
foreach($lines as $line) { 
    echo '<li>', htmlentities($line), '</li>'; 
} 
echo '</ul>'; 
+1

...你說得對,它有效,謝謝。這麼小的疏忽導致了我很多麻煩,我現在就開始踢自己了。 – Shane