Bonjour à tous,

mon site marche très bien jusqu'au dernier chapitre qu'on me conseille de faire une petite modification sur le fichier Router.php.
J'ai bien corrigé les erreurs de frappe. Il n'y a pas d'erreur mais j'arrive plus à me connecter sur mon site.

[code]<?php

class Router {

static $routes = array();
static $prefixes = array();

/*
 * Ajoute un prefix au Routing
 */

static function prefix($url, $prefix) {
    self::$prefixes[$url] = $prefix;
}

/*
 * Permet de parser une url
 * @param $url URL a  parser
 * $return tableau contenant les parametres
 */

static function parse($url, $request) {
    $url = trim($url, '/');
    $url = trim($url, 'R');
    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); // sauter 2 premiers elements

    return true;
}

/*
 * Permet de connecter une url à une action particulere
 */

static function connect($redir, $url) {
    $r = array();
    $r['params'] = array();
    $r['url'] = $url;

    $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']) . '$/';

    $r['origin'] = preg_replace('/:([a-z0-9]+):([^\/]+)/',':${1}:', $url);
    $r['originreg'] = str_replace('/*', ':args:', $r['origin']);

    $params = explode('/', $url);
    foreach ($params as $k => $v) {
        if (strpos($v, ':')) {
            $p = explode(':', $v);
            $r['params'][$p[0]] = $p[1];
        }
    }
    $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']);

    //debug($redir);die();
    self::$routes[] = $r;
    //debug($r);die();
}

/*
 * Permet de generer une url a partir d'une url originale
 * controller/action(/:param/:param/:param...)
 * 
 */

static function url($url = '') {
    trim($url, '/');
    //debug(self::$routes);die();
    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;
}

}

?>
[/code]
Voici le message d'erreur

( ! ) Warning: preg_match() [
function.preg-match
]: Delimiter must not be alphanumeric or backslash in C:\wamp\www\Projet\core\Router.php on line 101 Call Stack #TimeMemoryFunctionLocation 10.0004373952{main}( )..\index.php:0 20.0058569200Dispatcher->__construct( )..\index.php:11 30.0863625136Controller->render( )..\Dispatcher.php:27 40.0892649416require( 'C:\wamp\www\Projet\view\layout\default.php' )..\Controller.php:42 50.0916662136Router::url( )..\default.php:27 60.0916662200
preg_match
( )..\Router.php:101

Si vous voyez les erreurs ou vous avez une solution
Merci de repondre à ce sujet.

Aucune réponse