1

JavaScript変数としてエコーアウトする必要がある複数行の文字列を作成する関数があるため、文字列が作成された後、次のstr_replace()ように返す前に実行します。

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

これは奇妙なことです。これは、WampServer を実行している私の開発マシンでは問題なく動作しますが、ライブ サーバー (Apache と最新バージョンの PHP を実行している VPS) の行末にスラッシュを追加しません。

例:

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 に答える