首先,當我看到你的DATAS(產品清單),我想<ul> <li>
甚至會更好:
<ul>
<li>I am item 1</li>
<li>I am item 2</li>
<li>I am item 3</li>
<li>I am item 4</li>
</ul>
爲了您的preg_replace它甚至更好,如果你只是使用str_replace函數(少exepensive)
str_replace(array("<div>","</div>","<p>","</p>"), array("<li>","</li>","<ul>","</ul>"),$yourHtml)
然後你刪除空<p></p>
(現<ul></ul>
)由str_replace("<ul></ul>", "",$yourHtml)
但甚至更好的解決方案是自己編輯插件並定義不同的輸出!
雖然之後,其他的「更好」的解決辦法是獲得與preg_match_all陣列中的所有項目。
例:
$html="<p>
<div>my item 1</div>
<div>my item 2</div>
<div>my item 3</div>
<p></p>";
preg_match_all("#<div>(.*)</div>#",$html,$matchs);
var_dump($matchs[1]);
//var_dump output : array(3) { [0]=> string(9) "my item 1" [1]=> string(9) "my item 2" [2]=> string(9) "my item 3" }
如果你沒有在<div>
<div>
(我的意思是:<div> my <div>item 1</div></div>
)這個代碼將正常工作。
通過這種方式,您可以將所有數據存入數組中,並且它們更易於操作。 我不知道你的php學位,但只執行一個foreach循環
foreach($matchs[1] as $v){
//$v is one item
}
一個快速提示:有這個網站,你可以不斷地嘗試:http://gskinner.com/RegExr/ – xdbas 2012-07-24 22:53:47