gooブログ始めました(仮)<font color="blue">'日記'</font>(>_<)<..>

0123456789あいうえおかきくけこ0123456789亜衣宇江於加木久毛子01234567890123456789

実体参照対応の文字列短縮メソッドを作った

2013年07月05日 | gentoo
ページ上にてタイトルや記事概要を所定の枠内に収まるよう、テキストを途中でカットして“...”をつける処理として、show_formatted_length()というヘルパーメソッドを使っている。

が、その内部にて実際にカットする処理を行うPHP関数 mb_strimwidth()は実体参照を単なる半角英数字としか見なさないので、いくつのケースで不具合が生じている。

これに対応するため、lib/util.php 内に gb_substr() という実体参照を考慮した文字列の切り出しを行うメソッドを追加した。


これを使うと以下が解消される

1)実体参照の文字数がそのままカウントされるので、表示される文字数が少なくなる

 例: That's (>_<) を10文字で切る場合
    全体  That&#39;s (&gt;_&lt;)

    現行  That&#39;s            That's...  と表示

    修正  That&#39;s (&gt;_    That's (>_...  と表示


2)丁度切れる箇所に実体参照があると、途中までの実体参照が表示される

 例: That's (>_<) を7文字で切る場合

    全体 That&#39;s (&gt;_&lt;)

    現行 That&#3    That&#3...  と表示

    修正 That&#39;s   That's ...  と表示


グローバル関数なのでどこからでも使えるが、現状は show_formatted_length() での利用しか考えていないので、途中から切り出すことは出来ない。(つまりテキスト頭から何文字)

最新の画像もっと見る

post a comment