Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保留换行符的正则表达式_Php_Regex_Line Breaks - Fatal编程技术网

Php 保留换行符的正则表达式

Php 保留换行符的正则表达式,php,regex,line-breaks,Php,Regex,Line Breaks,我有一个正则表达式,它只允许消息中的某些字符。 我试图实现的是允许换行,这将使用nl2br功能保留 这就是我到目前为止的情况: preg_replace('/[^a-zA-Z0-9ńśćółęążź\ .,-]/','',$message) 据我所知,以下表达式应保留换行符,但将其添加到上述表达式时遇到问题: /(\r|\n|\r\n){2,}/ 您只需要将\r和\n添加到不替换的字符列表中。因此: preg_replace("/[^a-zA-Z0-9ńśćółęążź\ \.,\-\r\n

我有一个正则表达式,它只允许消息中的某些字符。 我试图实现的是允许换行,这将使用nl2br功能保留

这就是我到目前为止的情况:

preg_replace('/[^a-zA-Z0-9ńśćółęążź\ .,-]/','',$message)
据我所知,以下表达式应保留换行符,但将其添加到上述表达式时遇到问题:

/(\r|\n|\r\n){2,}/

您只需要将
\r
\n
添加到不替换的字符列表中。因此:

preg_replace("/[^a-zA-Z0-9ńśćółęążź\ \.,\-\r\n]/",'',$message)

在上面的表达式中,我还必须将
'
更改为“(以便
\r
\n
被识别),但也必须转义
-
字符,您只需要将
\r
&
\n
添加到字符列表中,以避免替换。因此:

preg_replace("/[^a-zA-Z0-9ńśćółęążź\ \.,\-\r\n]/",'',$message)

在上面的表达式中,我还必须将
'
改为“(以便
\r
&
\n
被识别),但也必须转义
-
字符,我相信这就是您要寻找的

  • 使用preg_quote避免忘记转义某些字符,例如表达式中的“.”。我敢肯定大部分都是坏的
  • 使用不区分大小写的“i”修饰符,而不是a-zA-Z
  • 正如Ross所说,添加\r和\n
打印preg_替换(“/”.preg_quote(“[^a-z0-9śśśćółę铹ź-\r\n]))。 “/i”、“测试\r\ntest\rtest\ntest”)


我相信这就是你要找的

  • 使用preg_quote避免忘记转义某些字符,例如表达式中的“.”。我敢肯定大部分都是坏的
  • 使用不区分大小写的“i”修饰符,而不是a-zA-Z
  • 正如Ross所说,添加\r和\n
打印preg_替换(“/”.preg_quote(“[^a-z0-9śśśćółę铹ź-\r\n]))。 “/i”、“测试\r\ntest\rtest\ntest”)


我将断开字符串并检查每一行,而不是将换行符包含到正则表达式中。我将断开字符串并检查每一行,而不是将换行符包含到正则表达式中。还需要添加全局标志:/[^a-zA-Z0-9ŇśćóŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇ,您是对的)pregèu replace()默认情况下将执行全局替换,而g在PCRE中不是有效的修饰符(regex实现PHP使用)也需要添加全局标志:/[^a-zA-Z0-9êśćó322;èèèèèèèèèèèèèèèèèèèè,并且g在PCRE中不是有效的修饰符(PHP使用的正则表达式实现)