2014-02-24 42 views
0

条件更换
标签我试图写一个PHP函数,将把考虑单个和多个<br>标签作为唯一的治疗的情况下,一个字符串。我希望它采用任何有多个<br>标签的情况。 (<br><br>,或<br><br><br><br><br><br><br>等),并与</p><p>一个片段取代,但仍允许<br>标签的单个实例去改变。因此,作为一个例子:
一种考虑多单标签场景

//INPUT STRING: 
"<p>A yellow dog <br> An orange fox <br><br> A purple bird <br><br><br> A red rooster</p>" 
//OUTPUT STRING: 
"<p>A yellow dog <br> An orange fox </p><p> A purple bird </p><p> A red rooster</p>" 

得到任何帮助,谢谢。

回答

1

使用preg_replace()

$input_lines="<p>A yellow dog <br> An orange fox <br><br> A purple bird <br><br><br> A red rooster</p>"; 
preg_replace("/(<br>){2}/", "<\p><p>", $input_lines); 

DEMO

输出

<p>A yellow dog <br> An orange fox <\p><p> A purple bird <\p><p><br> A red rooster</p> 
+0

谢谢,但它取代了
标签还的单一实例。这是不希望的。我想要替换所有多实例,但保留
标记的任何单个实例。请参考我最初的例子。 – staticfiction

+0

我错过逗号在我正则表达式(
{2,}) – Nambi

+0

辉煌。有没有一种方法可以对此进行修改以解决带有斜杠的br标签,例如
,而不是仅仅
...? – staticfiction

0

这工作 -

$str = "<p>A yellow dog <br> An orange fox <br><br><br> A purple bird <br><br> A red rooster</p>"; 
$res = preg_replace("/(<br>){2,}/", "<p></p>", $str); 
print_r("<pre>".htmlentities($res)."</pre>"); 
//OUTPUT- <p>A yellow dog <br> An orange fox <p></p> A purple bird <p></p> A red rooster</p>