Foros del Web » Programando para Internet » PHP »

Problema con acentos al pasar cadena de texto por una función

Estas en el tema de Problema con acentos al pasar cadena de texto por una función en el foro de PHP en Foros del Web. Hola, todos. Tengo un problema al pasar una cadena por una función. El texto era muy largo entonces busqué una función para recortarlo, así que ...
  #1 (permalink)  
Antiguo 25/10/2014, 03:53
 
Fecha de Ingreso: octubre-2007
Mensajes: 91
Antigüedad: 16 años, 5 meses
Puntos: 1
Problema con acentos al pasar cadena de texto por una función

Hola, todos. Tengo un problema al pasar una cadena por una función. El texto era muy largo entonces busqué una función para recortarlo, así que encontré esta función del usuario Cluster (Gracias, capo!) para recortarlo:

Código PHP:
<? 
//Función para recortar string
function cortar_frase($frase_entrada,$cortar){ 

   
$frase_corta=substr($frase_entrada,0,$cortar); // obtener la frase cortada. 
   
$palabras=str_word_count($frase_corta,1); // obtener array con las palabras. 
   
$total_palabras=count($palabras)-1// contar total array elementos y restar 1 elementos 
   
$palabras=array_splice($palabras,0,$total_palabras); // le quitamos la ultima palabra. 
   
$frase_salida=implode(' ',$palabras); //  y concatenamos con el espacio hacia una cadena. 
   
$frase_salida .= "..."// se añaden los puntos suspensivos a la cadena obtenida.. 

  
return $frase_salida



?>
La función me sirvió, pero me trajo un inconveniente. Me elimina todos los caracteres que llevan acento. Por ejemplo, en vez de poner:

Centro de Estética y Dermatología

escribe:

Centro de Est tica y Dermatolog a

La cadena de texto sale de una base de datos y cuando la imprimo sin pasarlo por la función no me da este problema. Estuve probando con utf8_encode y utf8_decode, pero no me lo soluciona, tal vez lo esté usando mal

El campo en cuestión tiene cotejamiento utf8_general_ci

¿Hay algo que pueda agregar a la función para solucionarlo? ¿En dónde?
  #2 (permalink)  
Antiguo 25/10/2014, 08:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con acentos al pasar cadena de texto por una función

Las funciones tradicionales para cadenas de texto no funcionan bien con caracteres multibyte, en tu caso serían los acentos, etc.

Debes corregir la función usando la librería Multibyte de PHP:

http://php.net/manual/en/ref.mbstring.php

Consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/10/2014, 09:53
 
Fecha de Ingreso: octubre-2007
Mensajes: 91
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Problema con acentos al pasar cadena de texto por una función

Muchas gracias, lo estoy viendo: la verdad que desconocía esta librería.

Etiquetas: acentos, cadena
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 05:35.