Tema: Limpiar URLs
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/09/2011, 05:15
Vendetta
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 2 meses
Puntos: 5
Limpiar URLs

Buenas,

tengo un pequeño problema con una función que he hecho especificamente para limpiar URLs. El problema es que no las limpia al 100% por algun motivo. Dejo la función.

Código PHP:
Ver original
  1. function seoUrl($str){
  2.         $a = array('/(à|á|â|ã|ä|å|æ)/', '/(è|é|ê|ë)/', '/(ì|í|î|ï)/', '/(ð|ò|ó|ô|õ|ö|ø)/', '/(ù|ú|û|ü)/', '/ç/', '/þ/', '/ñ/', '/ß/', '/(ý|ÿ)/', '/(=|\+|\/|\\\|\.|\'|\_|\\n| |\(|\))/', '/[^a-z0-9_ -]/s', '/-{2,}/s');
  3.         $b = array('a','e','i','o','u','c','d','n','s','y','-','','-');
  4.         return trim(preg_replace($a, $b, strtolower($str)), '-');
  5.     }

Lo que sucede es que los acentos no los reemplaza. En lugar de ello no pone nada dejando, por ejemplo, en lugar de "fantasía" pone "fantasa"...en teoría...no deberia reemplazar toda la lista de "i" que he puesto, por la i normal del array B?

La verdad es que no se mucho del preg_replace y derivados. Si mal no recuerdo "str_replace" no me serviria en este caso porque no interpreta expresiones regulares...Entonces realmente no se porque no funciona pero bueno, como digo, no se demasiado. He ido mezclando cosas de otras funciones que he encontrado adaptandolas a una función independiente y quizás durante la mezcla he hecho algo que no debería.

Agradecería una manita