如果字符串超过一定数量的字符,如何用MySQL回显部分UTF-8 varchar字符串?

时间:2012-07-18 08:24:49

标签: php text utf-8 substr

我目前正在使用substr()函数,该函数适用于用英语编写的字符。但是当我将它应用于用希腊文写的字符时,文本会被切割成一个奇怪的字符(钻石形状内的问号)出现在3个完整停靠点之前(...)。 以下是代码,谢谢:

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

1 个答案:

答案 0 :(得分:1)

像这样使用multibyte functions

mb_internal_encoding( "UTF-8" );

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

普通函数对字节起作用,并且没有像你期望的那样具有任何字符感知。使用UTF-8中常见英文字符的文本每个字符都是1个字节,因此正常功能会意外地为它们工作。