正则表达式以保留换行符

时间:2013-02-21 09:34:52

标签: php regex line-breaks

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

到目前为止,这就是我所拥有的:

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

据我所知,下面的表达式应该保留换行符,但是我在将其添加到上面的表达式时遇到了问题:

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

2 个答案:

答案 0 :(得分:2)

您只想添加\r& \n到要替换的字符列表。所以:

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

在上面的表达式中,我还必须将'更改为“(以便\r& \n被识别”,但也必须转义{{1 }和.个字符

答案 1 :(得分:1)

我相信这就是你要找的东西。

  • 使用preg_quote以避免忘记转义某些字符,例如“。”在你的表达中。我确信大部分时间都破了。
  • 使用不区分大小写的'i'修饰符,而不是a-zA-Z
  • 正如罗斯所说,添加\ r和\ n
  

print preg_replace('/'。preg_quote('[^ a-z0-9ńśćółęążź\。, - \ r \ n])')。   '/ I', '', “测试\ r \ NTEST \ RTEST \ NTEST”);