改行コードの統一

統一する

置換候補に同じ文字が含まれるため、str_replace()ではうまくいかない。たとえば「\r\n」「\r」「\n」を「\r\n」に統一したい時、「\r\n」は「\r\n」のままにならなくてはいけないのに、再帰的に変換されて「\r\n\r\n」となる。

strtr($string, $convertArray)なら、一度置換した箇所は再置換されないという特徴を持つ。置換順も、自動的に検索文字列長が長い順にしてくれる。

$to = "\r\n";

strtr($str, [
    "\r\n" => $to,
    "\r" => $to,
    "\n" => $to,
]);

単純な置換は以下が速いらしい。

  • 1バイト⇒1バイト文字の置換
    • strtr($string, 'abc', 'ABC')
  • 複数バイト文字の置換、再帰的に変換される心配はない
    • str_replace(['a', 'b', 'c'], ['AA', 'BB', 'CC'], $string)
  • 複数バイト文字の置換、再帰的な変換を避ける
    • strtr($string, ['a' ⇒ 'AA', 'A' ⇒ 'aa'])

brに置換する

専用の関数がある

nl2br($str);
nl2br(htmlspecialchars($str));

programming/php/file_handling/unificate_line_break.txt · 最終更新: 2016/08/01 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0