我有字符串:
$pattern = '/\s*$/';
// \s* - any spaces
// $ - end of string
模式:
preg_replace($pattern, "\n5", $string);
为什么我打电话:
"1\n2\n3\n4\n5\n5"
输出是:
"1\n2\n3\n4\n5"
我的模式有什么问题以及如何更改它,结果将是:
{{1}}
答案 0 :(得分:0)
$
可以匹配即将发生的换行符以及字符串的结尾。
但是,在这种情况下,您的主要问题是\s*
匹配零或更多空格字符。
\n\n␄
匹配并首先由\s*$
以及第一次替换后的5\n␄
。
\s*$
被视为$
。
文字的新结尾␄仍与$
匹配。
它不像$
本身总是匹配两次,但\s*$
的组合可以。
最简单的解决方法是不匹配零空格,但要使它只占用现有的空格:
/\s+$/
在您的情况下,这足够了,因为您只关心字符串的结尾并清除多余的换行符。