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 :

Regex : extraire les urls des tags [img] [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 37
    Points
    37
    Par défaut Regex : extraire les urls des tags [img]
    Bonjour
    J'ai besoin d'extraire les urls des tags [img][/img] et [img=width,height][/img] d'un textarea.

    Pour ça, j'utilise ces deux lignes de code :

    preg_match('`\[img](.*?)\[/img]`si', $texte, $tab_img1);
    et
    preg_match('`\[img=(.*?),(.*?)](.*?)\[/img]`si', $texte, $tab_img2);
    qui me retournent un tableau avec l'url extraite.

    Est ce qu'il est possible de passer par un seul preg_match pour faire mes deux recherches? Si oui, comment faire?

    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par Thi0123
    Est ce qu'il est possible de passer par un seul preg_match pour faire mes deux recherches? Si oui, comment faire?
    Oui, l'alternative se fait à l'aide du métacaractère |.

    Par contre, je pense qu'il manque l'option non gourmande (drapeau U) dans votre expression régulière et l'échappement des crochets fermants.

    Une petite lecture : Initiation aux expressions régulières en PHP


    Julp.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    J'ai un problème avec le flag U, lorsque je l'ajoute:



    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
    <?php
    $texte = 
    "
    ffsdfdsfsdfsdsdfsd\n
    [img]abc[/img]\n
    fsdfsdlmkfsdlmkflmsdfsdlm\n
    [img]123456[/img]
    ";
     
    $masque = '`\[img](.*?)\[/img]`si';
    preg_match($masque, $texte, $tab_image);
     
    echo '<pre>';
    print_r($tab_image);        
    echo '</pre>';
    ?>
    Au lieu de me retourner le premier tag [img], il me retourne le texte compris entre le premier [img] et le dernier

    Ce qui donne
    Array
    (
    [0] => [img]abc[/img]

    fsdfsdlmkfsdlmkflmsdfsdlm

    [img]123456[/img]
    [1] => abc[/img]

    fsdfsdlmkfsdlmkflmsdfsdlm

    [img]123456
    )

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Je ne suis pas réveillé . Vous utilisiez déjà des expressions non avides .*? donc l'option non gourmande n'est pas nécessaire. Par contre, elle l'aurait été si vous aviez utilisé .* tout court.

    Pour en revenir sur l'alternative, cela devrait nous donner quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match('`(?:\[img=(.*?),(.*?)]|\[img])(.*?)\[/img]`si', $texte, $tab_img);

    Julp.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Merci d'avoir regardé J'avais essayé avec le métacaractère | mais ça ne fonctionnait pas.
    Je viens de tester ton bout de code et ça fonctionne, merci!

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

Discussions similaires

  1. recuperer les id des tags img
    Par riadhhwajdii dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/09/2009, 14h16
  2. Réponses: 4
    Dernier message: 15/06/2006, 23h07
  3. Extraire les coordonnées des triangles d'un X
    Par Rafy dans le forum DirectX
    Réponses: 4
    Dernier message: 08/06/2006, 17h52
  4. [VBA-E]Extraire les infos des cellules
    Par boosty dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/04/2006, 09h46
  5. Extraire les liens des fichiers flash
    Par bluecurve dans le forum Langage
    Réponses: 3
    Dernier message: 16/03/2006, 21h24

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