Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 1st, 2012  |  syntax: None  |  size: 1.53 KB  |  hits: 4  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?php
  2.   public static function getRoute($key, $params=array())
  3.     {
  4.  
  5.         if (isset(self::$_config['route'][$key]) === false) {
  6.             return false;
  7.         }
  8.  
  9.         $route = self::$_config['route'][$key][0];
  10.        
  11.         preg_match_all('#\((.+?)\)#', $route, $matches, PREG_SET_ORDER);
  12.        
  13.         /* On check tous les paramêtres optionnels */
  14.         foreach ($matches as $match) {
  15.            
  16.             preg_match_all('#\{(.+?)\}#',$match[1], $argNames, PREG_SET_ORDER);
  17.            
  18.             /* Si le paramètre est renseigné */
  19.             if (isset($params[$argNames[0][1]]) === true) {
  20.                 $route = preg_replace('#\{' . $argNames[0][1] . '\}#', urlencode($params[$argNames[0][1]]), $route);
  21.                 unset($params[$arg[1]]);
  22.             }else if (strpos($match[0], "=") !== FALSE) { /* s'il y a une valeur par défaut */
  23.                 preg_match('#\=(.*?)\}#', $match[1], $value);
  24.                 $route = preg_replace('#\{' . $argNames[0][1] . '\}#', urlencode($value[1]), $route);
  25.             }else{/* si ça existe pas on supprime le paramètre */
  26.                 $route = str_replace($match[0], "", $route);
  27.             }
  28.         }
  29.        
  30.         /* il reste les paramètres obligatoires */
  31.         foreach ($params as $key=>$param) {
  32.             $route = preg_replace('#\{' . $key. '\}#', urlencode($param), $route);
  33.         }
  34.        
  35.         /* Nettoyage des parenthèses  */
  36.         $route = str_replace(array("(",")"), "", $route);
  37.         return $route;
  38.  
  39.     }