Categorías: Tutoriales

Cortar cadenas UTF-8 en PHP

Cuando trabajamos con cadenas en UTF-8 (si queréis más información sobre juegos de caracteres os recomiendo esta entrada: Entender los juegos de caracteres y “collation” I y II que escribí hace tiempo) no podemos usar la función típica para hacer subcadenas de PHP: substr, ya que en el caso de que el corte caiga justo en un carácter no ASCII, habrá un problema en la representación y aparecerá un carácter extraño.

El origen de este problema es que se trata de un juego de caracteres en el que cada carácter no tiene por qué tener un sólo byte de tamaño, si no que puede llegar a ocupar 4 bytes como máximo, es decir, también puede ocupar 2 o 3 bytes.

La solución es utilizar la función que ofrece PHP para estos casos: mb_substr a la que llamaremos de la misma forma, pero pasándole un argumento extra, el tipo de codificación utilizada, por ejemplo UTF-8:

$subcadena = mb_substr($cadena, $inicio, $longitud, 'UTF-8');

Como véis, podéis elegir además de UTF-8 otros juegos de caracteres.

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

Entradas recientes

432 CVEs

5 días hace

Anti-IA

2 semanas hace

Memoria

3 semanas hace

Mal uso

4 semanas hace

Precio de la RAM

1 mes hace

AUR

1 mes hace