Foros del Web » Programando para Internet » PHP »

ayuda con str_replace

Estas en el tema de ayuda con str_replace en el foro de PHP en Foros del Web. buenas a todos, estoy utilizando el str-replace para hacer un sistema de url amigables. el tema es que me funciona y hace lo que quiiero, ...
  #1 (permalink)  
Antiguo 16/12/2008, 10:57
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
ayuda con str_replace

buenas a todos,

estoy utilizando el str-replace para hacer un sistema de url amigables. el tema es que me funciona y hace lo que quiiero, solo tengo un problema. hago lo siguiente:

Código:
	$var_titulo=$row['titulo'];
	
	$var_titulo=str_replace (" ", "-", $var_titulo);
y si tengo

titulo del producto, me lo convierte en titulo-del-producto

el problema es que la cadena titulo, puedo contener caracteres como ¿?, !¡, /... y entonces me da error el script. hay alguna forma de codificarle tb estos caracteres? se puede pasar el str_replace 2 veces?

saludos
  #2 (permalink)  
Antiguo 16/12/2008, 11:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ayuda con str_replace

Claro, lo puedes usar tantas veces quieras, o en dado caso pasarle un arreglo de substituciones.

Si no conoces de PHP te recomiendo leas un manual del lenguaje, no hay ningun impedimento en usar N veces una funcion.

Saludos.
  #3 (permalink)  
Antiguo 16/12/2008, 14:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: ayuda con str_replace

Código PHP:
function sef_string($str) {
    
// Eliminar entidades HTML
    
$search = array('<''>''"''&');
    
$str str_replace($search''$str);
    
$str preg_replace('/&(?!#[0-9]+;)/s'''$str);

    
// Convertir acentos y tildes
    
$search = array('Á''É''Í''Ó''Ú''á''é''í''ó''ú''Ü''ü''Ñ''ñ''_');
    
$replace = array('a''e''i''o''u''a''e''i''o''u''u''u''n''n'' ');
    
$str str_replace($search$replacestrtolower(trim($str)));

    
// Eliminar todo lo que no sea letras, numeros o espacios y eliminar espacios dobles
    
$str preg_replace("/[^a-zA-Z0-9\s]/"""$str);
    
$str preg_replace('/\s\s+/'' '$str);

    
// Convertir espacios en guiones
    
$str str_replace(' ''-'$str);
    return 
$str;
}

$var_titulosef_string($row['titulo']); 
Todavia estoy probando esta funcion y seguramente habra mas cosas que se le deban agregar o modificar para optimizar, pero hasta el momento me ha sido util, espero que a ti tambien.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 17/12/2008, 04:37
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda con str_replace

gracias chicos!!

triby, he probado tu codigo tal cual y me da el siguiente error:

Fatal error: Cannot redeclare sef_string() (previously declared in ....

es como si no pasase bien el $string, no? incluso he probado a pasar $titulo, declarando antes como el $row, y tampoco.

hay algo mal?

saludos
  #5 (permalink)  
Antiguo 17/12/2008, 11:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ayuda con str_replace

El error es que ya declaraste la funcion en otro archivo y al incluirla en donde quieres la estas re-declarando, por ende el error.

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 02:28.