問題点:PHPの正規表現で改行記号(\n)をうまく識別できない
- 以下のPHPコード(preg_split)改行記号(\n)をうまく認識しない
$split_arr = preg_split('/[ ;;,,、\n\t]+/ui', ' ' . $str); var_dump($split_arr);
- 実行結果は以下のようで
array(7) { [0] => string(0) "" [1] => string(6) "午前" [2] => string(6) "午後" [3] => string(3) "昼" [4] => " [5] => " [6] => string(6) "学習" }
- 改行記号:「\n」だけては正規表現が認識しない
正規表現で改行を「\r\n」で認識すべきです
- ASCII文字コードではOSより改行コードが違います
- LF(改行、0x0A):主にUnix、Linuxで使用
- CR (復帰、0x0D) :主にAppleのMaxOSで使用
- CR+LF:主にWindowsで使用
- 使用OSより、改行記号が違うため、すべての改行記号を対応する正規表現が必要となります
- 改行記号:「\r\n」を利用すれば各OSに対応できます: preg_split('/[ ;;,,、\r\n\t]+/ui', ' ' . $str)