
Untitled
By: a guest on
Aug 1st, 2012 | syntax:
None | size: 1.53 KB | hits: 4 | expires: Never
<?php
public static function getRoute($key, $params=array())
{
if (isset(self::$_config['route'][$key]) === false) {
return false;
}
$route = self::$_config['route'][$key][0];
preg_match_all('#\((.+?)\)#', $route, $matches, PREG_SET_ORDER);
/* On check tous les paramêtres optionnels */
foreach ($matches as $match) {
preg_match_all('#\{(.+?)\}#',$match[1], $argNames, PREG_SET_ORDER);
/* Si le paramètre est renseigné */
if (isset($params[$argNames[0][1]]) === true) {
$route = preg_replace('#\{' . $argNames[0][1] . '\}#', urlencode($params[$argNames[0][1]]), $route);
unset($params[$arg[1]]);
}else if (strpos($match[0], "=") !== FALSE) { /* s'il y a une valeur par défaut */
preg_match('#\=(.*?)\}#', $match[1], $value);
$route = preg_replace('#\{' . $argNames[0][1] . '\}#', urlencode($value[1]), $route);
}else{/* si ça existe pas on supprime le paramètre */
$route = str_replace($match[0], "", $route);
}
}
/* il reste les paramètres obligatoires */
foreach ($params as $key=>$param) {
$route = preg_replace('#\{' . $key. '\}#', urlencode($param), $route);
}
/* Nettoyage des parenthèses */
$route = str_replace(array("(",")"), "", $route);
return $route;
}