1

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

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

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

据我检查,以下表达式应保留换行符,但我在将其添加到上述表达式时遇到问题:

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

2 回答 2

3

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

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

在上面的表达式中,我还必须将 " 更改'为 " (以便识别\r& \n),但还必须转义.and-字符

于 2013-02-21T09:39:18.563 回答
1

我相信这就是您正在寻找的。

  • 使用 preg_quote 避免忘记转义某些字符,例如“。” 在你的表达中。我敢肯定,这主要是破坏它。
  • 使用不区分大小写的 'i' 修饰符,而不是 a-zA-Z
  • 正如罗斯所说,添加 \r 和 \n

打印 preg_replace('/' . preg_quote('[^a-z0-9ńśćółęążź\ .,-\r\n])') . '/i','',"test\r\ntest\rtest\ntest");

于 2013-02-21T09:56:07.160 回答