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

在php中使用trim从字符串的开头和结尾删除新行,php,newline,trim,Php,Newline,Trim,我的印象是,如果省略指定特定字符的第二个参数,则不仅会删除空格,还会删除字符串开头(和结尾)的新行 此函数返回一个字符串,其中空格从 str的开始和结束。如果没有第二个参数,trim()将 去掉这些字符: “”(ASCII 32(0x20)),一个普通空格。“\t”(ASCII 9(0x09)),a 标签。“\n”(ASCII 10(0x0A)),一个新行(换行符)。“\r”(ASCII 13 (0x0D)),一个回车符。“\0”(ASCII 0(0x00)),NUL字节。 “\x0B”(ASC

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

此函数返回一个字符串,其中空格从 str的开始和结束。如果没有第二个参数,trim()将 去掉这些字符:

“”(ASCII 32(0x20)),一个普通空格。“\t”(ASCII 9(0x09)),a 标签。“\n”(ASCII 10(0x0A)),一个新行(换行符)。“\r”(ASCII 13 (0x0D)),一个回车符。“\0”(ASCII 0(0x00)),NUL字节。 “\x0B”(ASCII 11(0x0B)),一个垂直选项卡

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

\u200b\n\nTHE TEXT I WANT STARTS HERE. I WANT TO GET RID OF EVERTHING BEFORE WORD THE
<>我试图使用修剪的原因是因为我想在文本中间保留新的线条和格式,因为它可能会被分成段落。我只想把它的边缘修剪一下


我是不是错了,修剪应该删除线中断和新的线在开始和结束的字符串?删除如上所述新行的正确方法是什么?

将零长度空格字符(\u200b)添加到要删除的字符列表中,然后按照您的预期工作

$ws = " \t\n\r\0\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;

添加不间断空格字符(\xA0)可能也是一个好主意。

“trim应该删除字符串开头和结尾的换行符,我错了吗?”-不,您只是错误地假设在
\u200b\n\n\n文本的开头有换行符…
-
\u200b
不是换行符,并且不是trim将删除的空白字符列表的一部分,您在手册中引用了自己的话。\u200b是零宽度空格,\n是一个新行。\n是手册中提到的内容之一。您推荐的代码是什么?\n是手册中提到的内容之一”-是的,但如果之前有其他内容,则不是在开始。您的示例有效,因此我将标记为正确。在我的具体情况下,它仍然不起作用。我怀疑有一些隐藏的字符我看不见。我在问题中给出的字符是字符串经过json编码后出现的字符。如果我只是回显字符串,它会显示新行。你知道一种看隐藏字符的简单方法吗?我会使用bin2hex。顺便说一句,请注意字符编码。什么是字符编码?仅供参考,我可以使用:$string=str\u replace(数组(“\n\r”,“\n”,“\r”),“,$string”)来去除字符//删除新行$string=preg_replace('/[\x{200B}-\x{200D}]/u','''.$string)//去掉零宽度空间。仍在研究如何使用trim执行此操作。