<?php
/**
* 
*/
class Conf
{
    static $debug=1;

static $databases=array(

    'default'=>array(
      'host'=>'localhost',
      'database'=>'test',
      'login'=>'root',
      'password'=>''

        )
);

}
//Router::connect('post/:slug-:id','posts/view/id:([0-9]+)/slug:([a-z0-9\-]+)');
Router::connect('post/:slug-:id','posts/view/id:(?P<id>[0-9]+)/slug:(?P<slug>[a-zA-Z0-9\-]+)'); 
// Router::connect('post/:slug-:id','post/view/id:([0-9]+)/slug:([a-zA-Z0-9\-]+)'); 
?>

<div class="page-header">
    <h1>Le blog</h1>
</div>
<?php foreach ($posts as $k => $v) : ?>
<h2><?php echo $v->name;?></h2>
<?php echo $v->content;?>
<p><a href="<?php echo Router::url("posts/view/id:{$v->id}/slug:
             $v->slug"); ?>">Lire la suite → </a></p>
<?php endforeach; ?>

<div class="pagination">
  <ul>
    <?php for ($i=1; $i <=$page; $i++): ?>
    <li <?php if($i==$this->request->page) echo 'class="active"'; ?>
        > <a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li>
<?php endfor;?>
  </ul>
</div>

<?php
class Router{
    static $routes=array();
//permet de parser une url
    static function parse($url,$request){
        $url=trim($url,'/');
        $params=explode('/', $url);

        $request->controller=$params[0];
        $request->action=isset($params[1])? $params[1]:'index';
        $request->params=array_slice($params, 2);
        return true;
}
//connect
 static function connect($redir,$url){
    $r=array();
    $r'redir']=$redir;
    $r'origin']=preg_replace('/([a-z0-9]+):( ^\/]+)/', '${1}:(
    ?P<${1}>${2})',$url );
        $r'origin']='/'.str_replace('/', '\/', $url).'/';
    self::$routes]=$r;
    debug($r);

}
//
static function url($url){

    foreach (self::$routes as $v) {
             if(preg_match($v'origin'], $url,$match)){
                foreach ($match as $k => $w) {
                    if(!is_numeric($k)){
                        $v'redir']=str_replace(":$k", $w,$v'redir']);
                }
                debug($match);

                }
                return $v'redir'];
             }
    return $url;
    }
}

}
?>
[IMG]http://imageup.fr/uploads/1376235357.png[/IMG]
[IMG]http://imageup.fr/uploads/1376235389.png[/IMG]
après de cliquer sur Lire la suite
[IMG]http://imageup.fr/uploads/1376235422.png[/IMG]

3 réponses




après de cliquer sur Lire la suite

Alors là c'est sublime, tu nous balances la plupart des codes, et des screens montrant que tu as sans doute même pas cherché à débuguer par toi même, et il y a qu'une phrase de toi (je soupçonne que tu es étranger vu ton orthographe)

M'enfin bref ici je pense que soit ça vient de ta base de donnée qui t’envoie le slug avec une multitudes d'espaces, même si je ne pense pas, ou sinon (et c'est fort possible) c'est ton regex qui est pas bon, enfin je veux dire oui il convient car si tu tapes quelque chose qui contient autre chose qu'un tiret et lettres/chiffres, alors là c'est pas bon, mais pour lui les espaces sont correcte aussi, c'est pour ça que tu as des %20 (espace).

Sinon je présumes que si tu tapes http://localhost/Site/posts/view/id:5/slug:Mon-deuxième-article là ça marche non?

Si oui, vérifies ton lien "Lire la suite" avec Firebug, voir si oui ou non il y a déjà les espaces, si oui ça vient de ta variable $v->slug qui contient déjà des espaces. Donc là tu fais un trim($v->slug) pour supprimer les espaces en début/fin de chaine.

Si non c'est que tu as une drôle de redirection Oo

Bonjour?? Bonsoir? Hello?,Salut? hey ? lut? lu ? yo!?
d'avance merci?, merci?, cimer? ci? thks?

yen a plein des synonymes pourtant XD même abrégé