[ PHP ] グーグルの検索結果のように文字列を丸める ( mb_strimwidth 関数 )

Pocket

ヤフーやグーグルで検索すると、ページタイトルが長い場合には最後のほうは 「 … 」 と省略されていることがわかります。

ここでは、PHP で上記のように文字列が一定サイズ以上であれば、文字列を省略するサンプルコードを掲載しています。

スポンサーリンク


検索結果では長いタイトルは省略される

こんな感じで長いタイトルの場合、全てを出力してくれません。「 もう少し出してくれよ 」 と思うことはあるかもしれませんが、残念ながら決定権はグーグルなりヤフーなりにあります。仕方がありません。

タイトルが長いと省略される

検索結果では、タイトルが長いと省略される ( … )

検索結果のタイトルが丸められるサイズがいくつであるか、数えてみるのも良いでしょう。おおよそのサイズはわかると思います。また、検索結果にタイトルを全て表示したいサイト運営者の方は、そのサイズにあわせたタイトルとするようにしなくてはいけません。

PHP : mb_strimwidth 関数

PHP では、mb_strimwidth 関数で上記のタイトルと同様な文字列操作を行うことがができます。一定の幅以上になるような場合には、文字列を丸め(切り捨て)ます。以下、サンプルコードになります。

// 0 が開始位置で、10 が丸めるサイズ
echo mb_strimwidth("Hello World", 0, 10, "...", 'UTF-8');
// 'Hello W...'

echo mb_strimwidth("ハローワールド", 0, 10, "...", 'UTF-8');
// 'ハロー...'

省略時に最後に付加される文字列 ( … ) を含めて丸める幅が調整されいることがわかります。 また、全角文字は幅数 2、半角文字は幅数 1として扱われています。

文字化けが発生するようなときには、サンプルコードにあるように第5パラメータに適切なエンコーディングを設定することで解消されるはずです。

参考
スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>