2011-10-12 69 views
0

使preg_split HTML我有一些HTML這樣的:PHP - 由換行符或段落

<p>Lorem ipsum</p> 
Dolor sit amet 
<br><br> 
consectetur 
<p>adipiscing</p> 
<br>elit. 

而我試圖將它分爲兩​​個部分,並在結束分裂,得到這個:

Array(
    [0] => <p>Lorem ipsum</p> 
      Dolor sit amet 
    [1] => <br><br> 
      consectetur 
      <p>adipiscing</p> 
      <br>elit. 
) 

這個想法是讓第一個數組元素包含前兩個「段落」。我所說的「段落」是指「p」標籤內的文本,或者是兩個連續的「br」標籤之後的文本。

+0

你是例子,只顯示雙擊'

'作爲分隔符,它根本不考慮'p'標籤。 – 2011-10-12 09:35:19

回答

0

你需要用一個字符串來分割一個字符串的外觀。 preg_split會被一個正則表達式分割,雖然這是可能的,但我懷疑這不是你所需要的。

這裏是由兩個<br>標籤

$my_string = '<p>Lorem ipsum</p> 
Dolor sit amet 
<br><br> 
consectetur 
<p>adipiscing</p> 
<br>elit.'; 

$split_string = explode('<br><br>', $my_string); 

這將輸出一個數組拆分

echo $split_string[0]; 
echo $split_string[1]; 
+0

這應該是什麼語言?這不是PHP;) – rodneyrehm

+0

哎呀,對不起,我已經有了Javscript的大腦!有你去,在PHP :) – Luke

+0

好吧,我們現在去。我把我的大腦放在一起。 – Luke

0

不是100%肯定的S模式修改是必要的,但這應該工作,並捕獲<br><br>在指定的第二個值中。

$result_array = preg_split("/(?=<br><br>)/is", $my_string); 
2

也許這種模式:/(<\s*p\s*\/?>)|(<\s*br\s*\/?>)/會幫到您嗎?查看demo

+0

謝謝。我用你的代碼的一個變種來分割一些真正搞砸的HTML:'$ parsed = preg_split('/(<\s*p\s*\/?>)|(<\s*br\s*\/?>)|(\ s \ s +)|(<\ s * \/p \ s * \ /?>)/',$ datatoparse,-1,PREG_SPLIT_NO_EMPTY);' – Pamela