IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

extraire l'id d'une url


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut extraire l'id d'une url
    Bonjour tout le monde,

    j'ai un petit problème pour extraire l'id (juste avant "-1.html) de plusieurs url de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    http://www.domaine.com/keyword1-keyword2-keyword3-id-1.html
    
    http://www.domaine.com/keyword1-keyword2-id-1.html
    
    http://www.domaine.com/keyword1-id-1.html

    Pour l'instant j'ai trouvé cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
        function extract_unit($string, $start, $end)
        {
        $pos = stripos($string, $start);
     
        $str = substr($string, $pos);
     
        $str_two = substr($str, strlen($start));
     
        $second_pos = stripos($str_two, $end);
     
        $str_three = substr($str_two, 0, $second_pos);
     
        $unit = trim($str_three); // remove whitespaces
     
        return $unit;
        }
     
        $text = 'http://www.domaine.com/keyword1-keyword2-keyword3-id-1.html';
        $text2 = 'http://www.domaine.com/keyword1-keyword2-id-1.html';
        $text3 = 'http://www.domaine.com/keyword1-id-1.html';
     
        $unit1 = extract_unit($text, '-', '-1.html)');
        $unit2 = extract_unit($text2, '-', '-1.html)');
        $unit3 = extract_unit($text3, '-', '-1.html)');
    Mais comme vous l'avez peut être déjà deveniné, au lieu d'avoir uniquement l'ID, cela me donne ces résultats :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $unit1 = keyword2-keyword3-id
     
    $unit2 = keyword2-id
     
    $unit3 = id ( le seul qui marche puisqu'il n'y a qu'un seul tiret avant l'id)
    La seule constante dans l'url est la fin : -1.html , car avant l'ID, il peut y avoir plusieurs tirets. Du coup, je ne vois pas comment extraire cet ID !

    Est-ce que quelqu'un aurait la gentillesse de m'aider ?

    Merci beaucoup !

  2. #2
    Membre chevronné Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Par défaut
    Une petite regexp comme ceci fera l'affaire :

    tu n'as plus qu'à l'utiliser avec "preg_match" et le tour est joué.

  3. #3
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    salut,
    si tu sais que ton id est en avant dernier ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    $TabUrl=explode("-",$Url);
    $LgMax=sizeof($TabUrl);
     
    $Id=$TabUrl[$LgMax-1];

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut
    SAlut,

    génial merci pour vos réponses.

    François, j'ai fait ça :
    $regex = "/^.*-(.*?)-1\.html$/";
    $id = preg_match($regex, $url);

    mais $id retourne 0 (si je vire les / dans le regex, il me dit que la chaine avec ^est mal fermée.


    Guigo : merci à toi aussi, ta solution marche parfaitement , j'ai juste changé le -1 par -2 (le -1 donnait la fin de l'url : 1.html). Le -2 me donne bien l'ID.

    Passez un bon week end, et encore merci de votre aide !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 50
    Par défaut
    Salut a tous,
    Le preg_match il s'utilise pas comme ca !

    Francois pk y'a le (.*?) dans ce cas la ? tu ma expliquer sur une de mes autres questions (le no-grebby) et la dans se cas je vois pas a quoi il sert, ca marche aussi sans.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$s_str = 'http://www.domaine.com/keyword1-id-1.html';
    	preg_match('#.*-(.*)-#', $s_str, $a_array);
    	print "<pre>";print_r($a_array);print "</pre>";
    Merci pour la réponse

  6. #6
    Membre chevronné Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Par défaut
    Oui exact le ungreedy n'est pas nécessaire dans ce cas ci.

    L'erreur est humaine, le pardon est divin

Discussions similaires

  1. Extraire données à partir d'une url
    Par vinserm dans le forum R
    Réponses: 4
    Dernier message: 25/03/2015, 17h51
  2. Extraire un élément d'une url
    Par thibaud74 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 18/02/2010, 11h28
  3. Réponses: 4
    Dernier message: 09/01/2008, 01h36
  4. [RegEx] Expression reguliere extraire un param d une URL
    Par venomelektro dans le forum Langage
    Réponses: 3
    Dernier message: 18/10/2005, 18h28
  5. [RegEx] [Script]Extraire une url
    Par Hell dans le forum Langage
    Réponses: 9
    Dernier message: 17/10/2004, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo