1

我有一个构建多行字符串的函数,该字符串需要作为 JavaScript 变量回显,因此在构建字符串之后,我运行它,str_replace()然后像这样返回它:

return str_replace("\r\n", "\\\r\n", $output);

这是奇怪的事情:这在我运行 WampServer 的开发机器上运行良好,但它不会在我的实时服务器(运行 Apache 的 VPS 和最新版本的 PHP)上的行尾添加斜杠。

例子:

return (str_replace("\r\n", "\\\r\n",
        'this
        is
        a
        test'));

开发。机器:

this\ is\ a\ test 

直播服务器:

this is a test


我一直在查看文档,但不知道为什么会这样。有任何想法吗?

解决方案:

return (str_replace(PHP_EOL, '\\' . PHP_EOL,
        'this
        is
        a
        test'));
4

1 回答 1

7

在windows你有\r\n,但在linux你只有\n,所以这个函数不匹配任何\r\n

你应该PHP_EOL改用

于 2012-12-07T19:06:46.753 回答