2012-06-07 23 views
6

Il nostro sito Web è in cinese e una parte della pagina principale mostra un elenco di titoli di altre pagine con una lunghezza massima di ciò che viene chiamato "26" (presumo che stia usando il conteggio dei caratteri inglese se i caratteri cinesi sono stati scritti usando l'inglese?). La linea che usiamo per questo è:Truncating Chinese text

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

Tuttavia, se il titolo è infatti quello lungo il codice tronca come si deve, ma gli ultimi due caratteri cinesi sono sempre mostrati come come io sto indovinando sta usando la versione inglese delle parole e divide un personaggio cinese (in qualche modo). Forse sto pensando troppo a questo !?

Per esempio ....

originale:
在国内做一个尊重艺术,能够为青年导演提供平

versione troncata:
在国内做一个尊重��

Potete forse suggerire una modifica per permettere il numero desiderato di caratteri spettacolo senza conseguente il ?

risposta

6

Invece di substr uso mbstring funzioni:

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

Se non sei riuscito con questo, allora è possibile che il PHP non ha rilevato la codifica di stringa e quindi si prega di fornire la codifica diritto al 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)); 

Vedi mb_detect_encoding() nonché per ulteriori informazioni.

Spero che questo aiuti.

+2

Perfetto! Questo forum non smette mai di stupirmi, grazie mille! Il codice utilizzato nell'output finale era: '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

Prego! :-) – shadyyx