您尝试过的所有变体的主要问题在于,这两个\n
和\r
都是转义字符, 只有在双引号字符串中使用它们时才会转义 。
在PHP中,'\r\n'
和之间有很大的区别"\r\n"
。注意第一个中的单引号,第二个中的双引号。
因此: '\r\n'
将产生一个包含斜杠,“ r”,另一个斜杠和“ n”的四个字符串,而"\r\n"
将包含两个字符,即换行符和回车符。
因此,对问题的直接答案是,您需要使用问题中给出的第二个示例,但要用双引号而不是单引号:
$text = str_replace("\r\n",'', $text);
值得指出的是,这将从输入中删除 所有 新行,并将其替换为空。如果输入中有多个新行,则将其全部删除。在不了解您的应用程序的情况下,我不知道这是否是您想要的,但是这里有一些想法:
如果只想从输入字符串的 末尾 删除空白行(和其他空格),则可以使用该trim()
函数。
如果要保留输出到HTML的格式,则此nl2br()
功能将为您提供帮助。如果要输出为不带格式的HTML,则可能不需要删除它们,因为浏览器不会渲染\ n字符的换行符。
按照示例,如果您什么都没有替换新行,则第一行的最后一个单词将直接进入第二行的第一个单词,依此类推。您可能更喜欢用空格字符而不是什么代替它们。
用户可能只提交\n
没有匹配项的输入,\r
反之亦然(这可能是由于其OS或浏览器,故意的黑客入侵或其他多种原因)。如果要替换这两个字符的 所有 实例,一种更可靠的方法是单独替换它们,而不是依靠它们彼此相邻。str_replace()
允许您通过在数组中指定它们来执行此操作。您也可以使用strtr()
或preg_replace()
实现相同的目标。
希望能有所帮助。