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 件のコメント:
コメントを投稿