2012-06-07 10 views
6

Nuestro sitio web está en chino y una parte de la página principal muestra una lista de otros títulos de página con una longitud máxima de lo que se llama '26' (supongo que está utilizando el recuento de caracteres en inglés si los caracteres chinos fueron escritos usando inglés?). La línea que utilizamos para esto es:Truncar texto en chino

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

Sin embargo, si el título es de hecho a tiempo el código trunca como debería, pero los dos caracteres chinos finales siempre se muestran como lo que supongo está usando la versión en inglés de las palabras y dividiendo un carácter chino (de alguna manera). ¡¿Tal vez estoy pensando en esto ?!

Por ejemplo ....

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

versión truncada:
在国内做一个尊重��

¿Puede tal vez sugerir una modificación para permitir que el número deseado de caracteres mostrar sin que se produzca el 's?

Respuesta

6

En lugar de substr uso mbstring funciones:

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

Si no tiene éxito con esto, entonces es posible que PHP no detectó la cadena de codificación y, por tanto, por favor proporcione la codificación correcta a la 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)); 

Ver mb_detect_encoding(), así como para obtener más información.

Espero que esto ayude.

+2

¡Perfecto! Este foro nunca deja de sorprenderme, ¡muchas gracias! El código utilizado en el resultado final fue: '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

¡De nada! :-) – shadyyx

Cuestiones relacionadas