使用 trim 从 php 中的字符串的开头和结尾删除新行

Remove new lines from beginning and end of string in php using trim

我的印象是 trim command in PHP,如果您省略指定特定字符的第二个参数,不仅会删除空格,还会删除字符串开头(和结尾)的换行符。

This function returns a string with whitespace stripped from the beginning and end of str. Without the second parameter, trim() will strip these characters:

" " (ASCII 32 (0x20)), an ordinary space. "\t" (ASCII 9 (0x09)), a tab. "\n" (ASCII 10 (0x0A)), a new line (line feed). "\r" (ASCII 13 (0x0D)), a carriage return. "[=13=]" (ASCII 0 (0x00)), the NUL-byte. "\x0B" (ASCII 11 (0x0B)), a vertical tab.

但是,我将它应用于一个字符串,该字符串在开头有一些新行,这是由于删除的文本而导致的,并且它留下了以下内容:

\u200b\n\nTHE TEXT I WANT STARTS HERE. I WANT TO GET RID OF EVERTHING BEFORE WORD THE

我尝试使用 trim 的原因是因为我想保留文本中间的新行和格式,因为它可能会被分成段落。我只想 trim 它的边缘。

trim 应该删除字符串开头和结尾的换行符和新行,我错了吗?如上所示,删除新行的正确方法是什么?

将零长度 SPACE 字符 (\u200b) 添加到要删除的字符列表中,然后它会按预期工作。

$ws = " \t\n\r[=10=]\x0B\u200b";
$s = trim
(
 "\u200b\n\nTHE TEXT I WANT STARTS HERE. I WANT TO GET RID OF EVERTHING BEFORE WORD THE",
 $ws
);
echo $s;

最好也添加 NO-BREAK SPACE 字符 (\xA0)。