Inserer des valeur dans une URL [Résolu/Fermé]

Signaler
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
-
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
-
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

Messages postés
316
Date d'inscription
mercredi 20 mars 2013
Statut
Membre
Dernière intervention
1 juin 2015
15
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.
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
25
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.