当前位置: 首页 > 面试题库 >

用PHP替换\ r \ n

子车峰
2023-03-14
问题内容

我有一个张贴表单,可将​​我的文本插入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()实现相同的目标。

希望能有所帮助。



 类似资料:
  • 问题内容: 对于几种语言,已经多次询问了此信息,但我无法使其正常工作。我有这样的字符串 而且我想,以取代与使用 但不会被替换。我试图使用此RegEx工具进行验证,但看到的结果相同。输入的字符串不匹配。我究竟做错了什么 ? 问题答案: 这个对我有用。 结果: 您的问题在其他地方。

  • 问题内容: 尝试简单地替换一些新行。尝试了3种不同的方法,但我没有任何改变: 这些都应该起作用,但是我仍然可以换行。它们是双精度的:“ \ r \ r”。那不应该让这些失败吗? 问题答案: 已经有在换行符之前 替换 插入* 标签的[]功能: ~~~~* 示例(键盘): 但是,如果仍然无法正常工作,请确保文本被双引号引起来。 那是因为单引号不会“扩展”转义序列,例如与双引号字符串相比。引用PHP文档

  • 我需要替换和压缩随机字符串中的一些值,我将这些值存储在数组中。 即. e. 如果一个或多个数组值与随机字符串匹配,则需要如下替换: 有人能帮我吗? 谢谢。

  • 问题内容: 我正在尝试用普通的替换字符替换重音字符。以下是我目前正在做的事情。 这给了我: 上面给了我我想要的输出是。 谁能帮助我解决我的问题? 问题答案: 我已经根据答案中列出的变体尝试了各种方法,但以下方法可行:

  • 好吧,我可能不会用正确的方法来做这件事,但现在。。 我有这个字符串,它需要一个链接并提取标签之间的文本... 这个字符串中有几个项目有和符号(在文本部分,而不是标记部分),但是大多数没有。我试图找出一种方法,要么将与号合并到当前模式中,要么在上做另一个preg_replace,以便在标记被删除后删除与号。 谢谢

  • 问题内容: 我正在尝试用一个空格替换多个空格。使用时,我会收到关于它已过时的错误消息。 是否有相同的替代品。我需要用单个空格替换多个空格和多个空格。 问题答案: 使用和代替使用: 从正则表达式基本语法参考]: \ d,\ w和\ s 速记字符类,用于匹配数字,单词字符(字母,数字和下划线)和空格(空格,制表符和换行符)。可以在字符类的内部和外部使用。