Codeigniter のPOST処理で独自ルールを活用して文字を全角に変換する


CodeigniterのPOST処理を行う際に

$this->form_validation->set_rules

などでルールを定め、バリデーション処理を行うと思うのですが
その際に以前から文字を変換する作業も一緒に行いたいと考えてました。

公式のサイトを読み漁ったのですが、それらしき利用方法は見つからず諦めていた際に
偶然方法を自分で見つけたのでこちらに記載し共有させて頂きます。

方法

独自ルール関数のreturnをbool型ではなく、セットしたい内容にするだけ。
以上になります。

具体的なやり方

libraries以下に「CI_Form_validation」をextendsした独自クラスを追加
そのクラス内に文字を全角にしてセットしたい場合は下記の関数を追加

function cv_zenkaku($str)
{
  return mb_convert_kana($str, 'RNAKH'); // 全角に変換
}

コントローラーでそのクラスを呼び出します。

クラス名は例
$this->load->library(array('my_form_validation'));

その後、変換したいPOSTでrule設定を行います

$this->form_validation->set_rules('test1', 'テスト', 'cv_zenkaku');

その後、

$this->form_validation->run()

を実行するとPOSTの中身が入力の際に半角文字列を入力していても、全角文字に変換されていることが確認できると思います。

最後に

この方法を活用すると、全角文字の入力が必須だった場合。ユーザーに再度入力させる手間を減らすことが出来るので便利かと思います。

確認したバージョン

3.2.0-dev