trim()が原因で文字化けする

POSTデータをチェックする前に無駄な前後のスペースなどは取り除きたい場合。CakePHPで言うとbeforeValidateなんかで処理するケース。PHP: trim - Manualを使おうとすると文字化けする。

*1

<?php
// _は半角スペース_は全角スペース
$str = trim($str, '_\t\r\n\0\x0B_');

これは文字化けする。unicodeならいけるのかとUTF8で試すがダメみたい。なのでPHP: preg_replace - Manualで対応。UTF8でしか使えません。

<?php
// _は半角スペース_は全角スペース
$pattern = array('/^[_\t\r\n\0\x0B_]+/u', '/[_\t\r\n\0\x0B_]+$/u');
$str = preg_replace($pattern, '', $str);

*1:\円マークが表示されている場合はバックスラッシュと読みかえて下さい。