Thanos
Thanos

Reputation: 273

php: trim br tags from the beginning of a string?

I know that:

preg_replace('<br\s*\/?>', '', $string);

will remove all br tags from $string...

How can we remove all <br><br/><br /> tags only if they are in the very beginning of $string? ($string in my case is html code with various tags...)

Upvotes: 5

Views: 8846

Answers (3)

Konrad Rudolph
Konrad Rudolph

Reputation: 545568

Just add an appropriate anchor (^):

preg_replace('/^(?:<br\s*\/?>\s*)+/', '', $string);

This will match multiple <br>s at the beginning of the string.

(?:…) is a non-capturing group since we only use the parentheses here to group the expression, not capture it. The modifier isn’t strictly necessary – (…) would work just as well, but the regular expression engine would have to do more work because it then needs to remember the position and length of each captured hit.

Upvotes: 20

Salman Arshad
Salman Arshad

Reputation: 272096

$string = preg_replace( '@^(<br\\b[^>]*/?>)+@i', '', $string );

Should match:

<br>
<br/>
<br style="clear: both;" />
etc

Upvotes: 2

Gumbo
Gumbo

Reputation: 655219

You forgot the delimiters for PCRE in your regular expression. Try this:

$string = preg_replace('/^\s*(?:<br\s*\/?>\s*)*/i', '', $string);

This will also remove leading whitespace characters before, between and after the line break tags.

Some explanation:

  • ^\s* will match any whitespace characters at the start of your string
  • (?:<br\s*\/?>\s*)* will match zero or more occurrences of BR tags (both HTML and XHTML) followed by optional whitespace characters

Upvotes: 5

Related Questions