Question

$variable = 'Afrikaans 
Shqip - Albanian  
Euskara - Basque';

How do I convert each new line to paragraph?

$variable should become:

<p>Afrikaans</p>
<p>Shqip - Albanian</p>
<p>Euskara - Basque</p>
Was it helpful?

Solution

Try this:

$variable = str_replace("\n", "</p>\n<p>", '<p>'.$variable.'</p>');

OTHER TIPS

The following should do the trick :

$variable = '<p>' . str_replace("\n", "</p><p>", $variable) . '</p>';
$array = explode("\n", $variable);
$newVariable = '<p>'.implode('</p><p>', $array).'</p>'
<?php
$variable = 'Afrikaans  
Shqip - Albanian   
Euskara - Basque'; 
$prep0 = str_replace(array("\r\n" , "\n\r") , "\n" , $variable);
$prep1 = str_replace("\r" , "\n" , $prep0);
$prep2 = preg_replace(array('/\n\s+/' , '/\s+\n/') , "\n" , trim($prep1));
$result = '<p>'.str_replace("\n", "</p>\n<p>", $prep2).'</p>'; 
echo $result;
/*
<p>Afrikaans</p>
<p>Shqip - Albanian</p>
<p>Euskara - Basque</p>
*/
?>

Explanation:

$prep0 and $prep1: Make sure each line ends with \n.

$prep2: Remove redundant whitespace. Keep linebreaks.

$result: Add p tags.

If you don't include $prep0, $prep1 and $prep2, $result will look like this:

<p>Afrikaans  
</p>
<p>Shqip - Albanian   
</p>
<p>Euskara - Basque</p>

Not very nice, I think.

Also, don't use preg_replace unless you have to. In most cases, str_replace is faster (at least according to my experience). See the comments below for more information.

Try:

$variable = 'Afrikaans
Shqip - Albanian  
Euskara - Basque';

$result = preg_replace("/\r\n/", "<p>$1</p>", $variable);
echo $result;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top