Foros del Web » Programando para Internet » PHP »

palabras de un máximo de letras

Estas en el tema de palabras de un máximo de letras en el foro de PHP en Foros del Web. Hola, vengo buscando un metodo al que le pueda dar una cadena de palabras, y que revise que ningúna palabra sea mayor a un determinado ...
  #1 (permalink)  
Antiguo 19/07/2005, 22:28
 
Fecha de Ingreso: abril-2004
Ubicación: Ciudad de México
Mensajes: 52
Antigüedad: 19 años, 11 meses
Puntos: 1
palabras de un máximo de letras

Hola, vengo buscando un metodo al que le pueda dar una cadena de palabras, y que revise que ningúna palabra sea mayor a un determinado número de letras, lo que pasa es que si alguien pone un link de más de 25 letras en mi sitio rompe con el diseño, bueno, les agradesco su ayuda.
  #2 (permalink)  
Antiguo 20/07/2005, 02:02
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 3 meses
Puntos: 5
Lo mismo esta funcioncilla te sirve:
Código PHP:
<style>
* {font-size:12px;}
</style>
<?
function mayor($cadena,$numero)
{
    
$cadena=ereg_replace(" +"," ",$cadena);
    
$cadena=explode(" ",$cadena);
    
$bool=0;
    foreach (
$cadena as $valor$bool+=(strlen($valor)>$numero) ? 0;
    return 
$bool;
}
//Ejemplo
$maximo=25;
$a[]="esto es una 12345678901234567890123456 frase cualquiera kljljfhfgjklhjfkljhkljh";
$a[]="esto es una 1234567890123456789012345 frase cualquiera kljljfhfgjklhjfkljhkljh";
$a[]="esto es una 123456789012345678901234 frase cualquiera kljljfhfgjklhjfkljhkljh";
$a[]="esto es una frase cualquiera 12345678901234567890123456 12345678901234567890123456  12345678901234567890123456 12345678901234567890123456dfggdf ";
foreach (
$a as $indice=>$valor) print "<u>frase $indice:</u><br>".$valor."<br><B>----></B>".((mayor($valor,$maximo)) ? (" Hay ".mayor($valor,$maximo)) : " NO hay ninguna") . " palabra".((mayor($valor,$maximo)) ? ((mayor($valor,$maximo)>1) ? "s" "") : "")." con mas de $maximo caracteres<br><br>";
?>
Puse unos ejemplos para que vieras. Se considera palabra todo aquello que este separado por espacio.
Por ejemplo en esta cadena "hola que tal.¿Cómo estas...?", "tal.¿Cómo estas...?" se considera como una palabra pués no hay espacio después del punto.
A la función se le ha de pasar una cadena y un numero máximo a partir del cual se considera que la palabra excede. Devuelve 0 si no hay ninguna que exceda el máximo, y el número de palabras que lo exceden si hay una o más.

Ya dependiendo de lo que quieras hacer se podría mejorar.

Salu2 ;)

PD: El foreach y todo lo que le sigue es para que vieras unos ejemplos, no tiene mayor importancia...
__________________
[+]
[+]
  #3 (permalink)  
Antiguo 20/07/2005, 02:03
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 18 años, 10 meses
Puntos: 0
Puedes hacer esto:
Código PHP:
$link_corto substr($link,0,24);
echo 
'<a href="'.$link.'">'.$link_corto.'</a>'
Salu2
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #4 (permalink)  
Antiguo 20/07/2005, 02:07
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 18 años, 10 meses
Puntos: 0
Creo que cuando le di a "Enviar respuesta" Yoseman ya habia respondido
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #5 (permalink)  
Antiguo 20/07/2005, 02:57
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 3 meses
Puntos: 5
Buscando en php.net http://es2.php.net/manual/es/function.preg-replace.php , he encontrado una funcioncilla que lo mismo te puede servir bastante:
Código PHP:
function n3y_url_shorten($url,$chr_limit 25,$add '...') {
   return 
preg_replace("!(http:/{2}[\w\.]{2,}[/\w\-\.\?\&\=\#]*)!e""'<a href=\"\\1\" title=\"\\1\" target=\"_blank\">'.(strlen('\\1')>=$chr_limit ? substr('\\1',0,$chr_limit).'$add':'\\1').'</a>'"$url);
}

$a="Esta es mi cadena con enlaces de más de 25 caracteres y otros de menos http://forosdelweb.com http://forosdelweb.com/newreply.php?do=newreply&p=1184684 kjjgkdfjkjdf";
print 
n3y_url_shorten($a); 
Ya tienes varias soluciones según tus necesidades
__________________
[+]
[+]
  #6 (permalink)  
Antiguo 20/07/2005, 18:15
 
Fecha de Ingreso: abril-2004
Ubicación: Ciudad de México
Mensajes: 52
Antigüedad: 19 años, 11 meses
Puntos: 1
"yoseman" y "DvD AdN" muchas gracias por la respuesta, el primer código de "yoseman" es lo que andaba buscando, es perfecto, el segun también esta interesante, gracias
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:15.