Acceder Registrarme

Problemas en PHP al unir funciones htmlspecialchars y substr


Por: Kevin Arnold Arias Figueroa Publicado el: 2016-06-06 23:29:26 Pregunta cerrada

Como deben saber la función htmlspecialchars nos permite tratar cadenas con caracteres especiales de tal forma que puedan ser renderizados correctamente en la vista. Por ejemplo, lo siguiente.

<?php echo htmlspecialchars('Ñandú'); ?>

nos mostrará "Ñandú" como el texto que es, ya que si no usamos htmlspecialchars esto se mostraría con símbolos extraños. Hasta este punto no hay problema.

Si usamos la función substr sobre esa misma cadena, simplemente hará un substring de este, mostrando los símbolos extraños, sin embargo, el problema surge cuando se usan ambas funciones de la siguiente manera.

<?php
echo htmlspecialchars(substr('Ñandú', 0, 3));
//o viceversa
echo substr(htmlspecialchars('Ñandú', 0, 3));
?>

con lo que por lógica debería sacar un substring con los caracteres tal cual, sin embargo, lo que aquí sucede es que el texto que debería mostrarse simplemente sale en blanco y no muestra nada.

Esto sucede sólo al combinar ambas funciones, ya que si se usa cada una por separado todo funciona normal.

Espero alguien tenga alguna sugerencia para el caso. Gracias de antemano.



PHP Web

Maxwell Paniagua Marcado como mejor respuesta
por el autor de la pregunta
Usuario de (No especificado)

La solución a esto es usar mb_string quedando como el siguiente ejm:

<?php echo htmlspecialchars(mb_substr('Ñandú', 0, 3)); ?> 
  • 2016-06-07 15:22:27
  • Me gusta(3)
Usuario de (No especificado)

Bueno no soy un experto en Laravel ! pero no te aparece el texto completo solo cambia el valor de 3 por 6.

  • 2016-06-07 13:28:25
  • Me gusta(1)
Usuario de (No especificado)

Me olvidaba creo que cada caracter especial es 2 asi que seria
 echo substr(htmlspecialchars('Ñandú', 0, 7));

  • 2016-06-07 13:30:01
  • Me gusta(1)
Usuario de (Perú)

Gracias por la respuestra Nilton, pero el problema no es ese... lo que quiero hacer es justo sacar una porción de la cadena y con eso no hay problema... el detalle es que al combinar ambas funciones no sale ni una parte de la cadena... simplemente sale el texto en blanco, es decir... en teoría debería salir Ñan pero no sale nada.

  • 2016-06-07 13:33:17
  • Me gusta(0)
Usuario de (Perú)

Gracias Maxwell, funciona perfecto. Saludos.

  • 2016-06-07 15:27:19
  • Me gusta(0)

  • Debes estar logueado para realizar comentarios