How can I set any quantity of new lines with a regular expression?
JavaScript
x
$var = "<p>some text</p><p>another text</p><p>more text</p>";
$search = array("</p>s<p>");
$replace = array("</p><p>");
$var = str_replace($search, $replace, $var);
I need to remove every new line (n
), not <br/>
, between two paragraphs.
Advertisement
Answer
To begin with, str_replace()
(which you referenced in your original question) is used to find a literal string and replace it. preg_replace()
is used to find something that matches a regular expression and replace it.
In the following code sample I use s+
to find one or more occurrences of white space (new line, tab, space…). s
is whitespace, and the +
modifier means one or more of the previous thing.
JavaScript
<?php
// Test string with white space and line breaks between paragraphs
$var = "<p>some text</p> <p>another text</p>
<p>more text</p>";
// Regex - Use ! as end holders, so that you don't have to escape the
// forward slash in '</p>'. This regex looks for an end P then one or more (+)
// whitespaces, then a begin P. i refers to case insensitive search.
$search = '!</p>s+<p>!i';
// We replace the matched regex with an end P followed by a begin P w no
// whitespace in between.
$replace = '</p><p>';
// echo to test or use '=' to store the results in a variable.
// preg_replace returns a string in this case.
echo preg_replace($search, $replace, $var);
?>