Foros del Web » Programando para Internet » PHP »

problema con ñ al cortar frase en partes

Estas en el tema de problema con ñ al cortar frase en partes en el foro de PHP en Foros del Web. Encontré esta funcion en el foro para cortar frases en tantos caracteres. Pero me da problemas con la ñ. Por que será? Me la muestra ...
  #1 (permalink)  
Antiguo 01/11/2010, 07:56
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Información problema con ñ al cortar frase en partes

Encontré esta funcion en el foro para cortar frases en tantos caracteres. Pero me da problemas con la ñ. Por que será? Me la muestra como una cajita.

Código PHP:
/* Corta la frase en un determinado numero de caracteres */
function cortar_frase($frase_entrada,$cortar){ 

   if (
strlen($frase_entrada) < $cortar)
   return 
$frase_entrada;
   
   
$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

  #2 (permalink)  
Antiguo 01/11/2010, 08:04
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: problema con ñ al cortar frase en partes

Prueba con...

return utf8_encode($frase_salida);
  #3 (permalink)  
Antiguo 01/11/2010, 08:16
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: problema con ñ al cortar frase en partes

Probe con encode y decode, pero la primera me devuelve vacio, y la segunda un caracter Ã.

Voy a revisar el manual a ver que funcion de las listadas da problemas. No se por que hacen conversion si no es lo que se les pide.
  #4 (permalink)  
Antiguo 01/11/2010, 08:21
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: problema con ñ al cortar frase en partes

Bueno, encontre algo en el manual sobre las ñ y el substr. Sin embargo, no me funciona:
http://php.net/manual/es/function.substr.php

Código PHP:
Ver original
  1. Simple UTF-8 Multibyte solution (without mb_substr)
  2.  
  3. <?php
  4.   $string="texto en español";
  5.   echo substr($string,0,14); //Outputs: texto en espa�
  6. ?>
  7.  
  8. <?php
  9.   $string="texto en español";
  10.   echo utf8_encode(substr(utf8_decode($string),0,14)); //Outputs: texto en españ
  11. ?>

Me sigue saliendo la cajita, aun jugando con otras combinaciones de encode y decode.
  #5 (permalink)  
Antiguo 01/11/2010, 08:24
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: problema con ñ al cortar frase en partes

LISTO! Ahora si ya esta resuelto. Pasaba que una segunda funcion da problemas de utf-8. ASí que decodifico al principio y recodifico al fin:

Código PHP:
Ver original
  1. function cortar_frase($frase_entrada,$cortar){
  2.  
  3.    if (strlen($frase_entrada) < $cortar)
  4.    return $frase_entrada;
  5.  
  6.    $frase_corta =  substr(utf8_decode($frase_entrada),0,$cortar); // obtener la frase cortada.
  7.    $palabras = str_word_count($frase_corta,1); // obtener array con las palabras.
  8.    $total_palabras = count($palabras)-1; // contar total array elementos y restar 1 elementos
  9.    $palabras = array_splice($palabras,0,$total_palabras); // le quitamos la ultima palabra.
  10.    $frase_salida = implode(' ',$palabras); //  y concatenamos con el espacio hacia una cadena.
  11.    $frase_salida .= "..."; // se añaden los puntos suspensivos a la cadena obtenida..
  12.  
  13.    return utf8_encode($frase_salida);
  14. }
  #6 (permalink)  
Antiguo 01/11/2010, 08:37
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: problema con ñ al cortar frase en partes

Es mejor si usas mb_substr directamente para eso...

Saludos.

Etiquetas: cortar, frase, partes
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 07:07.