ethnaの既存フィルターをutf-8で使用する方法
ethnaのデフォルトの文字コードはEUCなのだけど、これをutf-8に移行した場合何故か既存のフィルターがうまく動かなかった。以下の方法でうまくフィルターが動くなったので記載しておく。
Ethna_ActionFormの修正
既存のフィルター要素はEthna_ActionForm.phpに記載してある。パスを記載したいところだが個々の環境で違うはずなので検索してほしい。PEARでインストールした場合は、PEARのインストールフォルダ配下に存在するはずだ。
で、Ethna_ActionForm.phpを以下のように修正する。
修正前: <?php /** * フォーム値変換フィルタ: 全角英数字->半角英数字 * * @access protected * @param mixed $value フォーム値 * @return mixed 変換結果 */ function _filter_alnum_zentohan($value) { return mb_convert_kana($value, "a"); } ?> 修正後: <?php /** * フォーム値変換フィルタ: 全角英数字->半角英数字 * * @access protected * @param mixed $value フォーム値 * @return mixed 変換結果 */ function _filter_alnum_zentohan($value) { return mb_convert_kana($value, "a", "utf-8"); } ?>
その後にフィルター要素を以下のように記載すると、既存で存在するフィルターが動く。
<?php var $form = array( 'sample' => array( 'name' => 'サンプル', 'required' => true, 'filter' => FILTER_HW, 'type' => VAR_TYPE_STRING, ), ); ?>