PHPで文字列の文字数とバイト数を数える
2010-03-03
Web アプリで入力フォームを扱うと、エラーチェック(Validate)が必要になります。一般的には、未入力チェックや入力文字数オーバーが多いですが、この入力文字数の基準が難しいところです。文字数の基準は、入力された文字列を保持するデータベースやファイルなど、仕様によって決まってきますが、文字列のバイト数を見るのか文字数を見るのかで大きく考え方が変わってきます。
例えば、Oracle の VARCHAR2 型のように文字列がバイト数で扱われると、全角と半角の混在も含めてバイト数で考える必要があります。逆に MySQL(厳密にはMySQL4.1以上)の VARCHAR 型のように文字数で考える場合はバイト数を意識する必要がありません。
どちらにしても、PHP にはバイト数を取得する関数と文字数を取得する関数がそれぞれ用意されているのでそれを使用します。ただ、バイト数で扱わないといけない場合は、エラーメッセージの出力方法も一工夫必要ですね。100 バイトが上限だと、半角の場合は 100 文字、全角の場合は 50 文字が許容範囲で、全角と半角が半分ずつ混在すると 75 文字。こんな時は 50 文字でエラー制限するつもりで、データベースの定義も考えないといけないですね。
s = "あいうえお"; // バイト数 n1 = strlen(s); // 文字数 n2 = mb_strlen(s); [結果] n1:10 n2:5
関連記事
- PHPで日本語のファイル名一覧表示
- PHPとMySQLで画像をBLOB型で管理する
- Smartyのhtml_checkboxes拡張
- PHPで文字列分解の罠
- PHPの文字列判定
- PHPで画像サイズ変更(ImageMagic編)
- PHPで画像サイズ変更(GDライブラリ編)
- Smartyで小数点以下の表示
- Smarty3では何が変わるのか
- Smartyで値段のカンマ区切り表記を使う
- Smartyで配列の要素数を使用する
- PHP5のpreg_match()でURLチェック
- PHP5でコンストラクタを使う
- PHP5でprivateとpublicを使う(変数編)
- Smartyでインデックス(INDEX)の表示
- 例えば、PHPを避ける
- array_searchで配列の中身をチェック
- FPDFでPDFファイルを作成
- PHPでモバイルサイト構築(2)
- PHPでモバイルサイト構築(1)
- PHP関連のダウンロードサイト
- PHPでディスク状況を調べる(dfコマンド)
- PHPのソースコードに日本語
- Smartyでurlencode
- PHPでchmodする
- PHPフレームワーク戦争
- PHPのインストール(GDライブラリ編)
- PHPのインストール(Windows編)
- Smartyに挑戦(2) 値と連想配列の表示
- Smartyに挑戦(1) コメント
- PHPの丸め処理(切捨て・切り上げ・四捨五入)


