Erreur PHP sur un preg_match() HELP
Résolu
blaz32
Messages postés
179
Statut
Membre
-
blaz32 Messages postés 179 Statut Membre -
blaz32 Messages postés 179 Statut Membre -
Salut, j'ai une erreur de la part de PHP :
Warning: preg_match() [function.preg-match]: No ending delimiter '/' found in C:\... line 91
Voici le bout de code concerné :
Router, système d'url :
J'aurais vraiment besoin d'aide ^^
Merci d'avance :D
Warning: preg_match() [function.preg-match]: No ending delimiter '/' found in C:\... line 91
Voici le bout de code concerné :
Router, système d'url :
static function url($url = ''){
trim($url,'/');
foreach(self::$routes as $v){
if(preg_match($v['originreg'],$url,$match)){
$url = $v['redir'];
foreach($match as $k => $w){
$url = str_replace(":$k",$w,$url);
}
}
}
foreach(self::$prefixes as $k => $v){
if(strpos($url,$v) === 0){
$url = str_replace($v,$k,$url);
}
}
return BASE_URL.'/'.$url;
}
J'aurais vraiment besoin d'aide ^^
Merci d'avance :D
3 réponses
-
voila :
<?php static function url($url = '') { trim($url,'/'); foreach(self::$routes as $v) { $pattern = "/".$v['originreg']."/"; if(preg_match($pattern,$url,$match)) { $url = $v['redir']; foreach($match as $k => $w) { $url = str_replace(":$k",$w,$url); } } } foreach(self::$prefixes as $k => $v) { if(strpos($url,$v) === 0) { $url = str_replace($v,$k,$url); } } return BASE_URL.'/'.$url; }
pense à te servir de php.net
https://www.php.net/preg_match
Admire la personne qui te critique , car prisonniere de ca propre jalousie elle ne fais que t admirer -
Merci, mais il détecte une erreur :
Warning: preg_match() [function.preg-match]: Unknown modifier '^' C:\.. in line 95
Je ne vois pas pourquoi l'erreur se trouve à :if(preg_match($v['originreg'],$url,$match)){ou à$pattern = "/".$v['originreg']."/"; if(preg_match($pattern,$url,$match))
-
J'ai résolus mon problème en repartant de plus haut :
J'ai remplacer :$r['originreg'] = preg_replace('/([a-z0-9]+):([^\/]+)/','${1}:(?P<${1}>${2}',$url); $r['originreg'] = str_replace('/*','(?P<args>/?.*)',$r['originreg']); $r['originreg'] = '/^'.str_replace('/','\/',$r['originreg'].'$/');
par :$r['originreg'] = preg_replace('/([a-z0-9]+):([^\/]+)/','${1}:(?P<${1}>${2})',$url); $r['originreg'] = str_replace('/*','(?P<args>/?.*)',$r['originreg']); $r['originreg'] = '/^'.str_replace('/','\/',$r['originreg']).'$/';
C'est pour ça ^^ j'avais oublié quelques caractères dans mon expression régulière ^^
Merci quand même.
PS:votre code fonctionne aussi