Foros del Web » Programando para Internet » PHP »

Excelente funcion con un pequeño fallo HELP!

Estas en el tema de Excelente funcion con un pequeño fallo HELP! en el foro de PHP en Foros del Web. Hola.... necesito que alguien me tire un cable con esta función que creó Cluster, que está muy bien pero tiene algún fallo que no logro ...
  #1 (permalink)  
Antiguo 26/09/2003, 22:48
Avatar de kaiowas  
Fecha de Ingreso: septiembre-2001
Ubicación: el averno...
Mensajes: 531
Antigüedad: 16 años, 3 meses
Puntos: 0
Excelente funcion con un pequeño fallo HELP!

Hola.... necesito que alguien me tire un cable con esta función que creó Cluster, que está muy bien pero tiene algún fallo que no logro solucionar....

esta es la función:

Código PHP:
<?php
function cortar_frase($frase_entrada,$cortar){

    
$frase_corta substr ($frase_entrada $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 $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;

}
?>
El problema viene cuando usamos signos de puntuación, html, caracteres especiales, etc... esta función no los respeta.... supongo que alguna de las funciones que utiliza la funcion cortar_frase se carga los caracteres especiales..... aunque no se cual...

AYUDA PLEASE!, me gustaría solucionarlo


Código PHP:
<?php

$frase 
"&eacute;sto es una cadena";

echo 
cortar_frase($frase,20); // sacará: eacute sto es una...

echo "<br>";

echo 
$frase// sacará: ésto es una cadena

?>
GRACIAS
  #2 (permalink)  
Antiguo 27/09/2003, 16:57
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 14 años, 8 meses
Puntos: 0
lo que se me ocurre seria algo haci

Código PHP:
<?php
function cortar_frase($frase_entrada,$cortar){
//aqui cambiamos los caracteres que no reconose a otro caracter que sea casi imposible de aparece en la frase que quieras cortar yo escogi este ||
    
$frase_entrada str_replace("&","||",$frase_entrada);
    
$frase_entrada str_replace(";","||",$frase_entrada);


    
$frase_corta substr ($frase_entrada $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 $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..

//aqui volvemos transformar los caracteres a su estado normal
    
$frase_salida str_replace("||","&",$frase_salida);
    
$frase_salida str_replace("||","&",$frase_salida);
    return 
$frase_salida;

}
?>
es una idea pero lo mas probable que Cluster tenga una mejor jejeje

salu2
__________________
http://www.manuales.astalaweb.com/Mprogramación.htm

diferentes manuales sobre programacion para descargar
  #3 (permalink)  
Antiguo 28/09/2003, 14:45
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 3 meses
Puntos: 8
desde php 4.3 podés usar la funcion html_entity_decode(), luego aplicas la funcion de cluster, y despues la conviertes a html de nuevo con htmlentities().

Esa es una idea...

en caso que uses <php 4.3 te transcribo esto del manual:
Código PHP:
// For users prior to PHP 4.3.0 you may do this:
function unhtmlentities ($string)
{
    
$trans_tbl get_html_translation_table (HTML_ENTITIES);
    
$trans_tbl array_flip ($trans_tbl);
    return 
strtr ($string$trans_tbl);

Saludos
  #4 (permalink)  
Antiguo 28/09/2003, 23:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usa lo que mencionó fran86 .. debes de convertir las entidadades HTML a "texto plano" para aplicar la funcioncita .. sino, no calculará bien (como así pasa) el tamaño de las cadenas usadas (string) como para cortarla y añadirle los ...

Luego (me repito . xD) como comenta fran86 ..pasa otra vez tu cadena "cortada" a entidades HTML para que el "efecto" de pasarle esa funcioncita sea "transparente" para el resto de tus scritps que así lo trabajas ...


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 20:24.