2012-06-07 13 views
6

私たちのウェブサイトは中国語であり、メインページの一部は他のページのタイトルのリストを「26」と呼ばれるものの最大長さで表示します(これは英語の文字数を中国語の文字は英語で書かれていましたか?)我々はこのために使用する行は次のようになります。しかし中国語の文字を切り詰める

<?php echo anchor('projects/'.$rs->url_project_title.'/'.$rs->project_id,substr(ucfirst($rs->project_title),0,26),'style="text-decoration:none;"'); ?>

、タイトルが長いに確かであれば、それは必要がありますが、私は推測しているとしてとして最後の2つの中国の文字が常に表示されているように、コードは、それを切り捨てそれは単語の英語版を使用して、中国語の文字を(何とか)分割しています。多分私はこれを考える上で!例えば

....

オリジナル:
在国内做一个尊重艺术,能够为青年导演提供平

切り捨てられたバージョン:
在国内做一个尊重��

あなたはおそらく、文字の希望数を可能にするための変更を提案することはできますがを生じることなく表示さ の?

答えて

6

代わりのsubstr使用mbstring機能:

echo anchor(
    'projects/' . $rs->url_project_title . '/' . $rs->project_id, 
    mb_substr(ucfirst($rs->project_title), 0, 26), 
    'style="text-decoration:none;"' 
); 

あなたはこれで成功していない場合、PHPは文字列のエンコーディングを検出し、そのためmb_substr()に右のエンコーディングを提供してくださいていない可能性があり:

// PHP uses internal encoding mb_internal_encoding() 
echo mb_substr($string, 0, 26); 
// you specify the encoding - in the case you know in which encoding the input comes 
echo mb_substr($string, 0, 26, 'UTF-8'); 
// PHP tries to detect the encoding 
echo mb_substr($string, 0, 26, mb_detect_encoding($string)); 

は、詳細については、同様mb_detect_encoding()を参照してください。

これが役に立ちます。

+2

完璧!このフォーラムは決して私を驚かせることを止めません。ありがとうございます!最終的な出力に使用されたコードは次のとおりです: 'echo anchor( 'projects /'。$ rs-> url_project_title。 '/')$ rs-> project_id、 mb_substr(ucfirst($ rs-> project_title)、0,26 、 'UTF-8')、 'style = "text-decoration:none;"' ); ' – JoeW

+0

ようこそ! :-) – shadyyx

関連する問題