用PHP替换\ r \ n
我有一个张贴表单,可将我的文本插入MySQL数据库。
我用
$post_text = mysql_real_escape_string(htmlspecialchars($_POST['text']));
并希望替换\r\n
自动添加的。
我试过了
$text = str_replace('\\r\\n','', $text);$text = str_replace('\r\n','', $text);
$text = str_replace('\\R\\N','', $text);
$text = str_replace('\R\N','', $text);
$text = str_replace('/\r\\n','', $text);
$text = str_replace('/r/n','', $text);
$text = str_replace('/\R\\N','', $text);
$text = str_replace('/R/N','', $text);
但\r\n
始终包含在我的数据库条目中。
我怎样才能解决这个问题?
回答:
您尝试过的所有变体的主要问题在于,这两个\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()
实现相同的目标。
希望能有所帮助。
以上是 用PHP替换\ r \ n 的全部内容, 来源链接: utcz.com/qa/414178.html