Resumen

Se explicara la manera correcta de acortar strings que se encuentran codificados en formato utf-8.

 

Ambiente

-PHP

Explicación

Normalmente cuando se requiere extraer o acortar una cadena de datos se utiliza la función de php llamada substr

 

substr(string $stringint $startint $length = ?)

 

Devuelve una parte del string definida por los parámetros start y length.

El problema es que esta función al utilizarlo con cadenas de datos codificadas en formato UTF-8 cuenta mal los carácteres, por lo que podría generar carácteres dañados y mostrandolos de esta manera: �.

 

Para evitar estos inconvenientes de deberá usar la función mb_substr.  Esta función cuenta correctamente los caracteres y retorna la cantidad correcta.

 

mb_substr(
    string $str,     int $start,     int $length = NULL,     string $encoding = mb_internal_encoding() )

Realiza una operación substr() multibyte de forma segura basada en el número de caracteres. La posición se cuenta desde el principio de str. La posición del primer carácter es 0. La posición del segundo es 1, etc.

 Ejemplo


        $utf8string "Buenos días compañeros";

        echo substr($utf8string,0,17);
        // output Buenos días co
        echo mb_substr($utf8string,0,17,'UTF-8');
        //output Buenos días comp

Referencias Externas

  1. https://www.php.net/manual/es/function.substr.php
  2. https://www.php.net/manual/es/function.mb-substr.php
Categorías: PHP

0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *