PHPでテキストエリアの入力を改行で区切って配列にする(改行コードはダブルクォーテーションで囲む)
PHPで改行コードを使うときはシングルクォーテーションでなく、ダブルクォーテーションを使う。文字列を改行コードで分割して配列にするときに、シングルクォーテーションだと予想しないことが起きる。下のコードにあるように改行コードはダブルクォーテーションで囲もう。
$rows = explode( "\n", $input );
テキストエリアの入力を改行で分割して配列にするときは次のようにする。
$input = filter_input( INPUT_POST, 'rows' );
$input = str_replace( array( "\r\n", "\r", "\n" ), "\n", $input );
$rows = explode( "\n", $input );
$rows = array_map( 'trim', $rows );
$rows = array_filter( $rows, 'strlen' );
$rows = array_values( $rows );
下の三行は、配列から文字のない要素を削除したり、その結果生じるキーのズレを修正したりするどうでもいいコード。
ポイントは改行コードを最初に¥nにまとめること。WindowsやMacでは改行コードの扱いに違いがあるので、最初にそれらを一つに統一して、それから¥nで分割する。
Tips
-
phpではグローバル変数を宣言時に初期化できない01136
-
PHP7以降では配列と連想配列をdefineで定義できる04961