PHP でフォームの改行コードを統一する
問題
- クライアントによって改行コードが異なるので、サーバ側で統一する必要がある。
解決方法
PHP 標準の str_replace では $_POST のような連想配列を変換できないので、str_replace() を再帰するようにしてやる必要がある。
<?php function str_replace_recursive($from, $to, $a){ $r = $a; array_walk_recursive($r, 'str_replace_recursive_func', array($from, $to)); return $r; } function str_replace_recursive_func(&$v, $k, $opt){ $v = str_replace($opt[0], $opt[1], $v); } $_POST = str_replace_recursive("\r\n", PHP_EOL, $_POST); $_POST = str_replace_recursive("\r", PHP_EOL, $_POST); ?>
補足
$_GET はエンコーディング変換してはいけないので注意。