2013年8月28日水曜日

php 文字列の長さを調べる

フォームからの入力文字数を制限する必要ができた。

phpで文字列の長さを調べる関数は strlen がぱっと出てくる。
しかし、この関数にはちょいとした問題がある。
たとえば

/*---------------------------------------------------------------------------*/

$str = "文字列mozire";
var_dump( strlen( $str ) );

/*---------------------------------------------------------------------------*/

今回の場合欲しい結果は int(12)。
しかし int(15) と表示されてしまう。
strlen は文字エンコーディングを考慮せず
単純にバイト数を引っ張ってくる関数なのでこういう結果になる。

php には文字列の長さを取る関数だけでも複数あるみたいで、
今回の目的にあっているのは mb_strwidth という関数みたい。
文字列の見た目の長さを引っ張ってくる関数。見た目て。

使ってみた。

/*---------------------------------------------------------------------------*/

$str = "文字列mozire";
var_dump( mb_strwidth( $str ) );

/*---------------------------------------------------------------------------*/

ばっちり。ちゃんと int(12) と表示された。

ついでに、入力された文字列を指定の文字数内に丸めるという処理もしたい。
mb_strimwidth という関数がそれをやってくれるようだ。
名前が似ていて間違いそう。

/*---------------------------------------------------------------------------*/

$str = "文字列mozire//ここから切られる";
var_dump( mb_strimwidth( $str, 0, 12 ) );

/*---------------------------------------------------------------------------*/

/ 以下を切り取る。
    string(15) "文字列mozire"
と表示されるはず。
丸める際に丸めた先にくっつけたい文字列も指定できるので、
まだ続きますよという表示のときに使われる...もこれでくっつけられそう。

0 件のコメント:

コメントを投稿