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: 24 años, 8 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: 20 años, 4 meses
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: 18 años, 1 mes
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, $replace, strtolower(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_titulo= sef_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: 24 años, 8 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: 20 años, 4 meses
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 00:33.