ページ上にてタイトルや記事概要を所定の枠内に収まるよう、テキストを途中でカットして“...”をつける処理として、show_formatted_length()というヘルパーメソッドを使っている。
が、その内部にて実際にカットする処理を行うPHP関数 mb_strimwidth()は実体参照を単なる半角英数字としか見なさないので、いくつのケースで不具合が生じている。
これに対応するため、lib/util.php 内に gb_substr() という実体参照を考慮した文字列の切り出しを行うメソッドを追加した。
これを使うと以下が解消される
1)実体参照の文字数がそのままカウントされるので、表示される文字数が少なくなる
例: That's (>_<) を10文字で切る場合
2)丁度切れる箇所に実体参照があると、途中までの実体参照が表示される
例: That's (>_<) を7文字で切る場合
グローバル関数なのでどこからでも使えるが、現状は 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() での利用しか考えていないので、途中から切り出すことは出来ない。(つまりテキスト頭から何文字)
※コメント投稿者のブログIDはブログ作成者のみに通知されます