The second parameter to trim isn't a string as such, more a list of chars you want to strip from the start and end of the string. So, you're telling to strip all leading and trailing <
, >
, \
, b
and r
characters.
Could try something like this regex to strip what you want from the front and end of a string...
//trim from start
$str=preg_replace('{^(?:<br />|</br>|\s+)+}', '', $str);
//trim from end
$str=preg_replace('{(?:<br />|</br>|\s+)+$}', '', $str);
Just to break down that first one...
- I've used
{}
to delimit my regex, just so I don't need to escape the matches on backslashes which I'd have to if I used the 'normal' //
delimiter
-
^
anchors the match to the start of the string
-
(?: )
is just a group of things we want to look for
- inside the group, we match either
<br />
, </br>
or any whitespace sequence \s+
- you can see each of these patterns is separated by |
to indicate each is a possible alternative match
- the group is followed by
+
to indicate we want to find one or more matches of that group
The second one is similar, but anchored to the end of the string with $