【问题标题】:PHP Accept line breaks using REGEXPHP 使用 REGEX 接受换行符
【发布时间】:2013-05-04 16:33:02
【问题描述】:

我想允许在此正则表达式中输入文本区域的换行符,但它们正在被删除?

$n= ereg_replace("[^a-zA-Z0-9[:blank:][:space:]&.\n\r\\/+-]+", "", $_REQUEST['input']);

【问题讨论】:

  • 好的,那么 preg_replace 等效
  • @user1209203 \n\r 在那里发挥作用。只需将它们从您的正则表达式中删除即可。
  • 我添加了它们以尝试修复它,没有它们也是同样的问题
  • 其实你是 Rikesh,问题是我只在寻找 \n 但每个新行似乎都是 \r\n 所有浏览器都是这样吗?

标签: php


【解决方案1】:

为您的正则表达式使用/m 修饰符。

http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

m (PCRE_MULTILINE)

默认情况下,PCRE 将主题字符串视为由单个“行”字符组成(即使它实际上包含多个换行符)。 “行首”元字符 (^) 仅匹配字符串的开头,而“行尾”元字符 ($) 仅匹配字符串末尾或终止换行符之前(除非设置了 D 修饰符)。这与 Perl 相同。设置此修饰符后,“行首”和“行尾”构造分别匹配主题字符串中任何换行符之后或之前的任何换行符,以及开头和结尾处。这相当于 Perl 的 /m 修饰符。如果主题字符串中没有“\n”字符,或者模式中没有出现 ^ 或 $,则设置此修饰符无效。

【讨论】:

  • 不是\s任何空白字符\S不是空白字符吗?看起来这个组合会匹配所有可能的字符。
猜你喜欢
  • 2018-08-27
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
相关资源
最近更新 更多