I\'m using a php function want to create a function to trim all unnecessary white spaces from a multi line string.
The regex that it\'s not working is the one tha
You may redefine where $
matches using the (*ANYCRLF)
verb.
See the following PHP demo:
$s = " ffffd \r\n bbb ";
$n = preg_replace('~(*ANYCRLF)\h+$~m', '', $s); // if the string can contain Unicode chars,
echo $n; // also add "u" modifier ('~(*ANYCRLF)\h+$~um')
Details:
(*ANYCRLF)
- specifies a newline convention: (*CR)
, (*LF)
or (*CRLF)
\h+
- 1+ horizontal whitespace chars$
- end of line (now, before CR or LF)~m
- multiline mode on ($
matches at the end of a line).If you want to allow $
to match at any Unicode line breaks, replace (*ANYCRLF)
with (*ANY)
.
See Newline conventions
in the PCRE reference:
(*CR) carriage return
(*LF) linefeed
(*CRLF) carriage return, followed by linefeed
(*ANYCRLF) any of the three above
(*ANY) all Unicode newline sequences
Now, if you need to
use
$s = " Ł ę d \r\n Я ёb ";
$n = preg_replace('~(*ANYCRLF)^\h+|\h+$|(\h){2,}~um', '$1', $s);
echo $n;
See the PHP demo.