new line to <p> in php

bghouse picture bghouse · Feb 16, 2013 · Viewed 11.5k times · Source

I currently have a lot of jokes in a database that are formated with nl2br() which produces...

This is just dummy text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<br /><br />
Vestibulum gravida justo in arcu mattis lacinia. Mauris aliquet mi quis diam euismod blandit ultricies ac lacus.
<br /><br />
Aliquam erat volutpat. Donec sed nisi ac velit viverra hendrerit.
<br />
Praesent molestie augue ligula, quis accumsan libero.

I need a php function that rather convert <br /><br /> into a <p></p> and if there is only 1 <br /> then leave it alone. Also trim any whitespace

So the end result would be...

<p>This is just dummy text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Vestibulum gravida justo in arcu mattis lacinia. Mauris aliquet mi quis diam euismod blandit ultricies ac lacus. </p>
Aliquam erat volutpat. Donec sed nisi ac velit viverra hendrerit.<br />
Praesent molestie augue ligula, quis accumsan libero.

can someone point me in the right direction or give me an simple function that does this? thanks

Answer

Tarandeep Gill picture Tarandeep Gill · Feb 16, 2013

Use PHP's string replace function to replace all <br /><br /> with </p><p>. http://php.net/manual/en/function.str-replace.php

Sample Code:

$stringWithBRs = nl2br($originalString)
$stringWithPs = str_replace("<br /><br />", "</p>\n<p>", $stringWithBRs);
$stringWithPs = "<p>" . $stringWithPs . "</p>";

Or, you can use the following code without even calling the nl2br() function.

$stringWithPs = str_replace("\n\n", "</p>\n<p>", $originalString);
$stringWithPs = "<p>" . $stringWithPs . "</p>";