2011-10-12 63 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