参考サイトはじめに掲示板やブログ等でよくある名前欄やコメント欄で入力可能文字数を制限する時、文字数の判定の為に文字数を取得しなければならない場面があります。今回はPHPで文字数を取得し、入力可能文字数を制限してみます。作業環境PHP(7.0.0)strlen関数は文字列の長さを取得しても文字数を返すわけではない以前strlen関数を別の入力欄の文字数を制限する為に使ったことがあり、同じ要領でできると思い、特に何も考えずにそのまま使ってみたものの上手くいきませんでした。調べてみると、strlen関数は文字列の長さを取得しますが、返すのは文字数ではなく、バイト数でした。文字数を返すのは何か調べを進めていくと、mb_strlenという関数に辿り着きました。これは文字列の長さを取得し、文字数を返すのですが、1文字が2バイト以上であるマルチバイト文字は1文字として返します。これにより、全角の文字数の判定にも対応できるということが分かります。実際に使ってみた所、半角、全角問わず文字数を取得し、入力可能文字数を制限することができました。まとめmb_strlen関数は文字列の長さを取得し、文字数を返す。strlen関数は文字列の長さを取得し、バイト数を返す。mb_strlen)kaji昨年大学を卒業したばかりのエンジニアです。CakePHPを勉強中です。拙い部分も多いですがよろしくお願いします。スポンサーリンクシェアするフォローするkaji関連記事EC-CUBE3でプラグインを使ったテーブルの作り方EC-CUBE3のプラグインでテーブルを作成する手順の紹介です。テーブルとエンティティをマッピングするための設定ファイルdcm.ymlを作り、その後にEC-CUBE3で用意されているコマンドを実行して、必要なファイルやテーブルを作成します。記事を読む【CakePHP】データベースにデータを新規に保存する今回はデータベースにデータを新規に保存する方法について紹介します。データベースにデータを保存するにはエンティティが必要です。記事を読むCakePHPで同じカラムに複数のカスタムバリデーションをセットする方法CakePHPのバリデーションの話です。同じカラムに対して複数のカスタムバリデーションを設定したかったのですが、1つしかバリデーションが効かなかったので原因を追求しました。記事を読むCakePHP3のバリデーションで確認用パスワードの一致確認CakePHPで入力されたパスワードと、確認用パスワードが一致しているか、バリデーションで確認する方法を紹介します。コントローラー側でチェック用の関数を使ったりするより、バリデーションでチェックした方が一石二鳥以上だと思います。記事を読むEC-CUBE3でテーブルにカラムを追加EC-CUBE3のプラグインでは、基本的に既存テーブルに対してカラムを追加するような拡張は推奨されていません。新規にテーブルを作るよりも、既存テーブルにカラムを追加した方が効率的なこともあるので、そんな時のためにやり方を紹介しています。記事を読むCakePHP3で検索結果をページネーションCakePHP3で簡単にできるページネーションを紹介します。今回は1ページあたりの件数とソートをいじって、検索結果をページ分けします。その上で、前後のページへのリンクやナンバリングをしたリンクを表示させます。Template」エラーが出てきました。対応するディレクトリに関数名と同じ名前のctpファイルを格納しているはずなのに。調べたところ、それまであまり気にしていなかった命名規則に原因があるらしい、、。記事を読むSmartyのテンプレートファイルの中で、文字列をテンプレートとして読み込む方法SmartyのテンプレートからSmartyの構文が入った文字列をレンダリングするやり方です。Smartyのテンプレートを、ファイルからではなく文字列から読み込ませたかったので公式のドキュメントからやり方を探しました。記事を読むCakePHPのvalidationDefaultで重複チェックをする方法CakePHP3のvalidationDefaultで重複チェックを行う方法を説明いたします。保存時のbuildRulesではなくvalidationDefaultで行うことで、入力後の確認画面に遷移する前にチェックができるようになります。記事の一覧を動的に表示させ、記事毎に設置させているボタンを押すと、対象の記事の「記事タイトル」を使った確認ダイアログが表示されるようにしたかった。CakePHPで色々処理を書いていた中、JavaScriptを連動させてみました。