Erreur PHP : preg_match() Compilation failed, missing )
Résolu
blaz32
Messages postés
179
Statut
Membre
-
chico200987 Messages postés 856 Statut Membre -
chico200987 Messages postés 856 Statut Membre -
Bonjour, j'ai une erreur de la part de PHP :
Warning: preg_match() [function.preg-match]: Compilation failed: missing ) at offset 46 in C:\Users\Perso\Documents\wamp\www\site\core\Router.php on line 27
Je ne vois pas ce que signifie cette erreur, j'ai recherché sur php.net, mais je ne trouve pas :(
que peut signifier cette erreur ?
Si je savais à quoi correspond cette erreur, ça pourrait m'aider à chercher le problème dans mon code...
Merci de vos réponses
Warning: preg_match() [function.preg-match]: Compilation failed: missing ) at offset 46 in C:\Users\Perso\Documents\wamp\www\site\core\Router.php on line 27
Je ne vois pas ce que signifie cette erreur, j'ai recherché sur php.net, mais je ne trouve pas :(
que peut signifier cette erreur ?
Si je savais à quoi correspond cette erreur, ça pourrait m'aider à chercher le problème dans mon code...
Merci de vos réponses
3 réponses
-
Salut,
Pourtant cette erreur est assez explicite, elle indique "missing ) at offset 46 [...] at line 27"
Ligne 27 colonne 46 il semblerait qu'il manque une parenthèse fermante. Mais cela peut-être du à autre chose, quelles sont les lignes 44 jusque 48 ? -
44 à 48, ça fait
return true; } /**
donc, voici le code des lignes 20 à 47 :static function parse($url,$request){ $url = trim($url,'/'); if(empty($url)){ $url = Router::$routes[0]['url']; }else{ $match = false; foreach(Router::$routes as $v){ if(!$match && preg_match($v['redirreg'], $url, $match)){ $url = $v['origin']; foreach($match as $k => $v){ $url = str_replace(':'.$k.':',$v,$url); } $match = true; } } } $params = explode('/',$url); if(in_array($params[0],array_keys(self::$prefixes))){ $request->prefix = self::$prefixes[$params[0]]; array_shift($params); } $request->controller = $params[0]; $request->action = isset($params[1]) ? $params[1] : 'index'; $request->params = array_slice($params,2); return true; }
Merci de votre aide, mais je ne vois pas où il manque une parenthèse... -
Merci beaucoup !
J'avais mon $v['redirreg'] qui correspondait à mon $r['redirreg']...
c'était ça :$r['redirreg'] = $redir; $r['redirreg'] = str_replace('/*', '(?P<args>/?.*)', $r['redirreg']); foreach($r['params'] as $k => $v){ $r['redirreg'] = str_replace(":$k", "(?P<$k>$v", $r['redirreg']); } $r['redirreg'] = '/^'.str_replace('/', '\/',$r['redirreg']).'$/'; $r['redir'] = preg_replace('/:([a-z0-9]+)/',':${1}:',$redir); $r['redir'] = str_replace('/*',':args:',$r['redir']); self::$routes[] = $r;
l'erreur venait du$r['redirreg'] = str_replace(":$k", "(?P<$k>$v", $r['redirreg']);car il fallait remplacer le ":$k" par ":$k:"...
Maintenant que l'expression régulière est correcte, je peux continuer là où j'en étais ^^
Merci beaucoup !