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 :

Utilisation de preg_match_all [RegEx]


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Utilisation de preg_match_all
    bonsoir

    Je viens chercher de l'aide


    voila apres avoir pas mal écumé google, les sites qui parle de php et avoir pratiquement tous tester, suis dans l'incapacité de faire fonctionner un preg_match_all .

    Enfaite mon projet est celui ci :

    Partir d'un morceau de code extraite de la base de donnée d'un soft du boulot pour faire sortir les photo qu'il contient via biensur php voici un exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #http://192.168.010.50/148/2/2/3/108389898/217641_/219876_920.jpg?cc=t/ZD1slw271MT-vVlV-kvdBNgvgwpnnFcFGntiyk0qo&updated=1218805993#,219886#http://192.168.010.50/148/2/2/3/108389898/217641_/219886_920.jpg?cc=MznbgakPxbygyR0tuZQXO5xOCFkw1vucnJQ4bA8r6oc&updated=1218806346#,219895#http://192.168.010.50/148/2/2/3/108389898/217641_/219895_920.jpg?cc=m-5BpHANAhQkrZTywtOhAG186rvWtIBJx6YLfJ/uFtY&updated=1218806502#
    voila ou j'en suis, j'ai pas mal épuré le code avec des str_replace maintenant je souhaiterais (juste) pouvoir extraire ce qui se trouve entre les diezes.

    voici mon morceau de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    preg_match_all('#(.*?)#', $final, $matches);
     
    print_r($matches)
    j'ai trouver un site (http://lumadis.be/regex/test_regex.php) qui m'a permis de tester et ça fonctionne très bien, je ne vois pas du tous où est le problème.
    Actuellement, j'obtiens chaque caractere dans un tableau

    Je souhaiterais obtenir le meme resultat que sur ce site mais la je doit avoué que je ne sais plus trop ou chercher.

    MErci a tous de votre aide

    Cordialement

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Il faut entourer ton expression régulière PCRE par un caractère délimitant non utilisé dans ton expression : '@#(.*)#@' par exemple (le ? ne sert à rien dans ton cas)

    Dans ton exemple, l'expression qui était prise en compte était simplement (.*?)

    Une petite modif de ton expression pour être certain d'avoir tout ce qui se trouve entre #, et uniquement ça : '@#([^#]*)#@', ce qui signifie une suite de 0 à n caractères autres que '#' entourés de '#'.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Nikel sa fonctionne à merveille, cependant pour rendre le lien cliquable j'ai pas mal de bug, je ne comprend pas trop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    preg_match_all('@#([^#]*)#@', $final, $matches);
     
    foreach( $matches[0] as $Key => $Value ) {
    	echo 'Resultat n°'.$Key.' : <a href='.$matches[1][$Key].'</a><br>';
    }
    ?>
    Une idée ?

    MErci pour ta reponse clair et comprehensible

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Il manque la fermeture de la balise, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Resultat n°'.$Key.' : <a href="'.$matches[1][$Key].'"></a><br>';

  5. #5
    Invité
    Invité(e)
    Par défaut
    avec ta modif, je n'ai plus les resultats de preg match all

    bizarre

  6. #6
    Invité
    Invité(e)
    Par défaut
    bon alors j'ai tourner le code dans tous le sens et je n'arrive pas a avoir un lien html sur les valeurs qui sont extraites. Je pense que j'en suis pas loin .

    Quelqu'un aurais une piste svp ?

  7. #7
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par roxor45 Voir le message
    avec ta modif, je n'ai plus les resultats de preg match all

    bizarre
    Oui, il faut les mettre à l'intérieur de la balise <a> aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Resultat n°'.$Key.' : <a href="'.$matches[1][$Key].'">'.$matches[1][$Key].'</a><br>';

  8. #8
    Invité
    Invité(e)
    Par défaut
    OMG !

    Merci sa fait vraiment plaisir quand sa marche, j'avais meme pas fais gaffe a ce detail !!


    MErci à toi pour ton aide

    hf


    [Résolu]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Utilisation de preg_match_all()
    Par student_ dans le forum Langage
    Réponses: 8
    Dernier message: 15/05/2011, 17h00
  2. [RegEx] Utilisation de preg_match_all pour un fichier externe
    Par divad dans le forum Langage
    Réponses: 6
    Dernier message: 07/05/2008, 12h10
  3. [RegEx] Utilisation de preg_match_all
    Par pifoux2000 dans le forum Langage
    Réponses: 2
    Dernier message: 28/02/2008, 10h06
  4. [RegEx] Utilisation de preg_match_all
    Par Christophe Charron dans le forum Langage
    Réponses: 5
    Dernier message: 28/07/2007, 14h35
  5. [RegEx] Problème d'utilisation de preg_match_all()
    Par hemgui dans le forum Langage
    Réponses: 7
    Dernier message: 16/05/2007, 17h22

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