リテラル文字列を含むテキスト ファイルがあります\r\n
。これを実際の改行 (\n) に置き換えたい。
正規表現/\\r\\n/
が一致する必要があることはわかっています(Reggyでテストしました)が、PHPで動作させることはできません。
次のバリエーションを試しました。
preg_replace("/\\\\r\\\\n/", "\n", $line);
preg_replace("/\\\\[r]\\\\[n]/", "\n", $line);
preg_replace("/[\\\\][r][\\\\][n]/", "\n", $line);
preg_replace("/[\\\\]r[\\\\]n/", "\n", $line);
バックスラッシュを置き換えようとすると、正しく機能します。r を追加するとすぐに、一致するものが見つかりません。
私が読んでいるファイルはUTF-16としてエンコードされています。
編集:
私もすでに使ってみstr_replace()
ました。
ここでの問題は、ファイルの文字エンコーディングにあると考えています。私は次のことを試しましたが、うまくいきました:
$testString = "\\r\\n";
echo preg_replace("/\\\\r\\\\n/", "\n", $testString);
しかし、ファイルから読み込んでいる行では機能しません。