pLog雖然有很多台灣人參與開發,但終究也是外國製的平台,尤其是當中使用了Smarty模版引擎,也是針對英文來編寫的,對於使用多位元文字的用戶(例如中國人)來說,畢竟會有點問題。最明顯的就是Smarty引擎的自動裁字功能truncate modifier。

現時米奇是使用php的mb_string extension所提供的function來修正Smarty對中文裁字的問題,將 strlen 和 substr 改成 mb_strlen 和mb_substr。

<plog_document_root>/class/template/smarty/plugins/modifier.truncate.php
  1. function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false)
  2. {
  3. if ($length == 0)
  4. return '';
  5. if (mb_strlen($string) > $length) {
  6. $length -= mb_strlen($etc);
  7. if (!$break_words)
  8. $string = preg_replace('/s+?(S+)?$/', '', mb_substr($string, 0, $length+1));
  9. return mb_substr($string, 0, $length).$etc;
  10. } else
  11. return $string;
  12. }

 

不過也有人是使用自製的裁字函式,這大概是因為很多人都是租用伺服器吧。