Inserer des valeur dans une URL

Résolu/Fermé
mariostar27 Messages postés 391 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 21 août 2015 - 22 mai 2013 à 23:15
mariostar27 Messages postés 391 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 21 août 2015 - 28 mai 2013 à 16:13
Bonjour.

Le titre n'est pas très explicite mais voici mon problème :

J'ai une URL comme ceci :

blog/categorie/([a-z0-9\-_]+)/page/([0-9]+)

J'ai un tableau comme ceci :

array('jeux', 2)

l'idée est de récupérer une URL en remplaçant les expressions par les valeurs du tableau, tout en vérifiant que celle-ci sont conforme à l'expression régulière. Ici, je devrait obtenir une URL comme ceci :

blog/categorie/jeux/page/2

Je n'ai aucune idée de comment faire ceci. Par avant merci.

2 réponses

loupix57 Messages postés 316 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 1 juin 2015 14
Modifié par loupix57 le 27/05/2013 à 14:20
Bonjour mario !

espérant que ceci vas t'aider

$tabl = Array("jeux",2);

$url_a_verifier = "blog/categorie/".$tabl[0]."/page/".$tabl[1]; 


// vérification avec l'expression réguliére

if(ereg('blog/categorie/([a-z0-9\-_]+)/page/([0-9]+) ', $url_a_verifier){
echo "url valide";}
else{echo "url invalide";}


Même les maths ça n'a rien de compliquer.
0
mariostar27 Messages postés 391 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 21 août 2015 26
28 mai 2013 à 16:13
Non.

Dans ton message, tu as :

$url_a_verifier = "blog/categorie/".$tabl[0]."/page/".$tabl[1]; 


hors, j'ai une url comme ceci :

blog/categorie/([a-z0-9\-_]+)/page/([0-9]+) 


Comment sais tu que tu doit modifier au bon endroit ???

En revanche, j'ai eu une réponse sur un autre site :

$url = "blog/categorie/([a-z0-9\-_]+)/page/([a-z0-9\-_]+)";
 
function getLink($subject, $elements)
{
    preg_match_all("#\((.*?)\)#", $subject, $match);
 
    if (isset($match[1]) && count($elements) == count($match[1]))
    {
        $callback = function($value) { return "#" . preg_quote($value) . "#"; };
 
        $search = array_map($callback, $match[0]);
 
        $link = preg_replace($search, $elements, $subject, 1);
 
        return preg_match('#^' . $subject . '$#', $link) ? $link : null;
    }
    return null;
}
 
echo getLink($url, array('jeux', '1'));


Ça fonctionne nickel.
0