Home > Php > Funcion URLs amigables con php

¿Que es una URL amigable? Es facil. Tradicionalmente, cuando solicitamos a una pagina que nos muestre una determinada información, lo que hacemos es asignar una serie de valores a una serie de variables. Estas variables son pasadas a la página a traves de la URL, la pagina las lee, procesa y muestra la información solicitada.

una url no amigable

http://dominio.com/vernota.php?cat=php&nota=23

url amigable 

http://dominio.com/php/url_amigable/

sin mas aqui la funcion

function amigable($id,$url) {
	// everything to lower and no spaces begin or end
	$a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ä€', 'ā', 'Ä‚', 'ă', 'Ä„', 'Ä…', 'Ć', 'ć', 'Ĉ', 'ĉ', 'ÄŠ', 'Ä‹', 'ÄŒ', 'č', 'ÄŽ', 'ď', 'Đ', 'Ä‘', 'Ä’', 'Ä“', 'Ä”', 'Ä•', 'Ä–', 'Ä—', 'Ę', 'Ä™', 'Äš', 'Ä›', 'Äœ', 'ĝ', 'Äž', 'ÄŸ', 'Ä ', 'Ä¡', 'Ä¢', 'Ä£', 'Ĥ', 'Ä¥', 'Ħ', 'ħ', 'Ĩ', 'Ä©', 'Ī', 'Ä«', 'Ĭ', 'Ä­', 'Ä®', 'į', 'Ä°', 'ı', 'IJ', 'ij', 'Ä´', 'ĵ', 'Ķ', 'Ä·', 'Ĺ', 'ĺ', 'Ä»', 'ļ', 'Ľ', 'ľ', 'Ä¿', 'Å€', 'Ł', 'Å‚', 'Ń', 'Å„', 'Å…', 'ņ', 'Ň', 'ň', 'ʼn', 'ÅŒ', 'ō', 'ÅŽ', 'ŏ', 'Ő', 'Å‘', 'Œ', 'œ', 'Å”', 'Å•', 'Å–', 'Å—', 'Ř', 'Å™', 'Åš', 'Å›', 'Åœ', 'ŝ', 'Åž', 'ÅŸ', 'Š', 'š', 'Å¢', 'Å£', 'Ť', 'Å¥', 'Ŧ', 'ŧ', 'Ũ', 'Å©', 'Ū', 'Å«', 'Ŭ', 'Å­', 'Å®', 'ů', 'Å°', 'ű', 'Ų', 'ų', 'Å´', 'ŵ', 'Ŷ', 'Å·', 'Ÿ', 'Ź', 'ź', 'Å»', 'ż', 'Ž', 'ž', 'Å¿', 'ƒ', 'Æ ', 'Æ¡', 'Ư', 'Æ°', 'Ǎ', 'ÇŽ', 'Ǐ', 'ǐ', 'Ç‘', 'Ç’', 'Ç“', 'Ç”', 'Ç•', 'Ç–', 'Ç—', 'ǘ', 'Ç™', 'Çš', 'Ç›', 'Çœ', 'Ǻ', 'Ç»', 'Ǽ', 'ǽ', 'Ǿ', 'Ç¿'); 
    $b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o'); 
    $url= str_replace($a, $b,$url);
	$url = strtolower(trim($url));
	//replace accent characters, epends your language is needed
	//$url=replace_accents($url);
	// decode html maybe needed if there's html I normally don't use this
	//$url = html_entity_decode($url,ENT_QUOTES,'UTF8');
	// adding - for spaces and union characters
	$find = array(' ', '&', '\r\n', '\n', '+',',');
	$url = str_replace ($find, '-', $url);
	//delete and replace rest of special chars
	$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
	$repl = array('', '-', '');
	$url = preg_replace ($find, $repl, $url);
	//return the friendly url
	return $id."_".$url; 
}