PHP:如何调整正则过滤字符串以保留换行符?
解决方案
直接在正则表达式的允许字符集合中添加\n和\r即可,修改后的代码如下:
$clean = preg_replace("/[^a-z0-9 \.\-\"_',\n\r]/i", "", $string);
说明:
- 字符类
[^...]表示匹配不在集合内的所有字符,把\n(换行符)和\r(回车符)加入集合后,这两类字符就不会被替换删除。 - 不需要添加
/m修饰符,该修饰符仅影响^和$的匹配范围(匹配行首/行尾),和换行符本身的保留无关。 - 若之前尝试添加
\R失败,是因为\R是正则中的换行符 shorthand(匹配任何换行序列),但它不能直接放在字符类[]中使用,所以直接显式添加\n和\r是最可靠的方式。
内容的提问来源于stack exchange,提问作者Scotty
相关产品推荐
相关产品推荐

