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.