2012-07-18 17 views
0

我目前正在使用substr()函数,它适用于用英文写成的字符。但是,当我将它应用于希腊文写作的字符时,文本会被切割出一个奇怪的字符(钻石形状内的问号),出现在3个完整的(...)之前。 下面是代码,感谢:如果字符串超过一定数量的字符,如何用MySQL回显UTF-8 varchar字符串的部分?

$string //a varchar string written in greek and called from the database 
if (strlen($string) > 200) { 
    echo substr($string, 0, 200).'...'; 
} 

回答

1

使用multibyte functions像这样:

mb_internal_encoding("UTF-8"); 

if(mb_strlen($string) > 200) { 
    echo mb_substr($string, 0, 200) . "..."; 
} 

的正常功能对字节工作,没有任何字符的意识好像你是他们期待。在UTF-8中使用普通英文字符的文本每个字符都为1个字节,所以正常功能意外地为它们工作。

+0

工作得很好,谢谢。有没有什么办法可以保留整个单词而不是从中间切掉它? – 2012-07-18 08:55:47

+0

@KokosKoka你需要做更聪明的处理,这超出了这个问题的范围。但请记住在进行此处理时使用'mb'函数。 – Esailija 2012-07-18 08:57:35

相关问题