我试图取代超过 2个新行字符2个新行字符.
我目前有:
$text = preg_replace('/(\r\n|\n|\r){3,}/', "\n\n", $text)
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但是新行并不总是\n字符,所以我想知道是否有我可以用正确的新行字符替换它?
您可以使用back reference替换匹配的完全相同的换行符: -
$text = preg_replace('/(\r\n|\n|\r){3,}/', "$1$1", $text)
Run Code Online (Sandbox Code Playgroud)
现在它将自动替换\n\n,如果\n匹配3次或更多次.其他两个相同.
因此,无论您的服务器使用什么换行符,都将被用作替代品.
还有一件事是,您的上述正则表达式可能会匹配单行中的不同换行符并尝试替换它.
例如: - \n\r\r\n将匹配并替换为\r\n\r\n.如果你想确保只匹配类似的换行符,例如: - \n\n\n,并替换为\n\n,那么你需要将你的正则表达式改为: -
$text = preg_replace('/(\r\n|\n|\r)$1{2,}/', "$1$1", $text)
Run Code Online (Sandbox Code Playgroud)
现在,它只会匹配的连续相同的换行符- \n\n\n\n\n,\r\r\r\r\r或\r\n\r\n\r\n\r\n.并替换2 occurrences任何匹配的.
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |