スマートフォンやhtml5+CSS3など新技術に四苦八苦。jQuery、AjaxなどJavaScriptも難しいですね。そんなWebに悩む人のネタ帳です。

PHPでCMSやブログを構築する場合に、デザインの都合上、文字列をまるめたい場合があります。

文字列をまるめるとは、任意の長さで文字列をカットして、末尾に「…」などを付加することです。
例えば

PHPで文字列をまるめるのに便利な関数「mb_strimwidth」

これを10文字でまるめると、以下のようになります。

PHPで文字列をまる…

PHPで文字をまるめる処理を書くと、以下のようになります。

$str = "PHPで文字列をまるめるのに便利な関数「mb_strimwidth」";
if(mb_strlen($str) > 10){
	echo mb_substr($str, 0, 10) . "…";
}else{
	echo $str;
}


ここで、最近知ったのですが、PHPには文字をまるめる関数「mb_strimwidth」が用意されていました。
この関数を使うと、同等の処理を1行で実装することができます。

$str = "PHPで文字列をまるめるのに便利な関数「mb_strimwidth」";
echo mb_strimwidth($str, 0, 10, "…");

もう一つ「mb_strimwidth」を使用する利点として、文字数ではなく文字の長さでまるめてくれるという点です。
10文字といっても、半角と全角ではその長さが異なるため、デザインのレイアウトを保ちたいという目的が達成できません。
以下は文字数が10でカットした場合です。

ああああああああああ…
aaaaaaaaaa…

「mb_strimwidth」は全角は長さ2、半角は長さ1とカウントするようなので以下のような結果になります。

あああああ…
aaaaaaaaaa…

全角と半角の文字幅というのは指定するフォントにもよりますが、このように、レイアウトを保つという目的には文字数より文字列の長さで処理した方が有効だと思います。

このエントリーをはてなブックマークに追加

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Monthly Archives

Search