也许是因为在文件 2 中你有:
$copy = preg_replace('^(.*)\n(.*)^', '$1<br />$2', $result['copy']);
$copy = preg_replace('/[\r]+/', '$1<br />$2', $result['copy']);
它忽略了第一个 preg_replace()。你要:
$copy = preg_replace('^(.*)\n(.*)^', '$1<br />$2', $result['copy']);
$copy = preg_replace('/[\r]+/', '$1<br />$2', $copy);
您已在文件 1 中正确实现。这可能意味着文件 1 的行为是正确的,而文件 2 的行为实际上是不正确的,具体取决于您看待它的方式。
编辑
要回答您的评论:
替换(在文件 1 中):
$copy = preg_replace('^(.*)\n(.*)^', '$1<br />$2', $js_r->copy);
$copy = preg_replace('/[\r]+/', '$1<br />$2', $copy);
和
$copy = preg_replace('/[\r]+/', '$1<br />$2', $js_r->copy);
这样能达到预期的效果吗?