【php】「改行コード」を別文字列に変換する関数を作ってみた
2018/02/28
データベースにあるレコードをcsv出力する際、改行が含まれているテキストエリアのレコードに対し、改行文字(改行コード)を統一したり、『%改行%』という別の文字列に変換する PHP の関数(スクリプト)を作成したので備忘録代わりにポストします。
改行コードを変換するスクリプト
使いどころとしては、データベースAのレコードを、データベースBへCSVファイルを介してインポートする際、改行を含んだレコードの改行コードを別の文字列や単語に変換したり、「/r/n」・「/r」・「/n」など、異なる改行コードを統一したい場合などに使えるかと。
なお、改行コードは
CR : キャリッジリターン → バージョン9までのMacOS
LF : ラインフィールド → UNIX系、バージョン10以上のMacOSなど
CRLF : キャリッジリターン-ラインフィールド → Windows
という様な内訳で、OSごとに使われる改行コードが異なります。
改行コードについて詳しくは以下を参照。
コード自体は非常に簡単で、わずか3行でできてしまいます。
プログラムって素敵。
1 2 3 |
function convertNewline($string, $to="\n") { return preg_replace("/\r\n|\r|\n/", $to, $string); } |
preg_replaceの文法については以下を参照。
PHP: preg_replace - Manual
http://php.net/manual/ja/function.preg-replace.php
http://php.net/manual/ja/function.preg-replace.php
デモ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$string = "CR + LF: \r\n CR: \r LF: \n"; echo "Test1:"; echo $string; echo "Test2 : For MacOSX, Unix, Linux"; echo convertNewline($string); echo "Test3 : For Windows"; echo convertNewline($string, "\r\n"); echo "Test4 : For MacOS 9"; echo convertNewline($string, "\r"); echo "Test5 : 別文字列へ"; echo convertNewline($string, "%改行%"); |
結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Test1: "CR + LF: \r\n CR: \r LF: \n" Test2 : For MacOSX, Unix, Linux "CR + LF: \n CR: \n LF: \n" Test3 : For Windows "CR + LF: \r\n CR: \r\n LF: \r\n" Test4 : For MacOS 9 "CR + LF: \r CR: \r LF: \r" Test5 : 別文字列へ "CR + LF: %改行% CR: %改行% lf: %改行%"; |