Foros del Web » Programando para Internet » PHP »

Depurar cadena

Estas en el tema de Depurar cadena en el foro de PHP en Foros del Web. Hola. En mi web, los usuarios ingresan texto. Para normalizar la presentación de los títulos hago: $titulo = strtolower($titulo); (Pongo lo escrito en minúsculas) $titulo ...
  #1 (permalink)  
Antiguo 06/02/2005, 03:24
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 13 años, 6 meses
Puntos: 0
Depurar cadena

Hola.

En mi web, los usuarios ingresan texto.
Para normalizar la presentación de los títulos hago:

$titulo = strtolower($titulo); (Pongo lo escrito en minúsculas)
$titulo = ucwords($titulo); (Pongo en mayúscula la primera letra de cada palabra)

De esta forma si ponen como título LA CASA DE LA PRADERA se graba en la BD La Casa De La Pradera y la salida siempre es esta.

Lo que he de hacer (y es lo que pregunto) es que las palabras De, La, y otras (Y, Para, Las, Los....etc) no aparezcan en mayúsculas.

Es decir que La Casa De La Pradera quede La Casa de la Pradera

No sé si hay alguna función que pueda usarse en la entrada (lo he buscado en php.net sin resultado) para que quede grabado como quiero o lo que tengo que hacer es reemplazar estas expresiones a la salida con ereg o algo similar.

Me interesaría encontrar una solución que depure a la entrada para que así quede grabado como quiero y evitar código en las páginas de consulta.

Gracias por vuestra ayuda.

Saludos.
  #2 (permalink)  
Antiguo 06/02/2005, 05:08
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 15 años, 9 meses
Puntos: 771
Hola javifo

No se si habrá alguna forma más sencilla, pero esto puede servirte:
Código PHP:
$pala=array('de','la','los'); // palabras que no quieres en mayúsculas
$texto='la casa de la pradera';
$palabras=explode(' ',$texto);
for(
$i=0;$i<count($palabras);$i++) 
  if(
$i==or !in_array($palabras[$i],$pala))
    
$palabras[$i]=ucwords($palabras[$i]);
$texto=implode(' ',$palabras);
echo 
$texto
Saludos,

Última edición por JavierB; 06/02/2005 a las 05:34
  #3 (permalink)  
Antiguo 06/02/2005, 05:44
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 13 años, 6 meses
Puntos: 0
Gracias JavierB.

Probaré tu código y te diré algo.
Saludos
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 18:19.