Erreur PHP sur un preg_match() HELP

Résolu
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 :

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

  1. mandolorien Messages postés 115 Statut Membre 3
     
    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
    0
  2. blaz32 Messages postés 179 Statut Membre 10
     
    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))
    0
  3. blaz32 Messages postés 179 Statut Membre 10
     
    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
    0