Foros del Web » Programando para Internet » PHP »

Funcion substr con palabras acentuadas

Estas en el tema de Funcion substr con palabras acentuadas en el foro de PHP en Foros del Web. Hola a todos. Estoy iniciándome en PHP y me estoy encontrando con algunas dudas con la función substr aplicada a variables acentuadas, por ejemplo: $var ...
  #1 (permalink)  
Antiguo 22/05/2012, 12:07
Avatar de ehpuig  
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 11 años, 10 meses
Puntos: 0
Funcion substr con palabras acentuadas

Hola a todos.

Estoy iniciándome en PHP y me estoy encontrando con algunas dudas con la función substr aplicada a variables acentuadas, por ejemplo:

$var = "préstamo";
echo $var."

en la pantalla del navegador aparece la palabra:

préstamo

hasta ahi todo correcto, pero cuando aplico la función substr:

$mydigits = substr($var, 0, 3);
echo $mydigits;

en la pantalla del navegador aparece la palabra:

pr�

como se puede apreciar, ya no aparece el acento.
Para hacer que salga, he de cambiar el substr y darle un dígito mas en su longitud:

$mydigits = substr($var, 0, 4);

Ahora en la pantalla aparece correctamente acentuada la palabra:

pré

Pero entonces, ¿Que esta pasando? ¿Debería mostrar la palabra con 4 dígitos y no con 3?
¿Alguien me podría aclarar esta situación?

Muchas gracias
  #2 (permalink)  
Antiguo 22/05/2012, 12:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Funcion substr con palabras acentuadas

Cuando trabajas con codificaciones como UTF-8 que guardan los carácteres en más de 2 bits por carácter, tienes que usar mb_substr() para obtener los caracteres necesarios.

Saludos.
  #3 (permalink)  
Antiguo 22/05/2012, 13:21
Avatar de ehpuig  
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Funcion substr con palabras acentuadas

Gracias GatorV.

Lo he comprobado y ha funcionado correctamente,.

Añado ejemplo de la funcón que me indicaste:

$var = "préstamo";
echo mb_substr($var, 0, 3, 'utf-8')

Etiquetas: funcion, palabras, substr, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:12.