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 :

Remplacement et récupération [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut Remplacement et récupération
    Bonjour,

    Je ne parviens pas a trouver comment effectuer au mieux les 2 opérations suivantes:

    Voici l'exemple :

    $text="<p>titre</p><div><img src='fond.jpg' /></div>";

    Comment puis, avec les expressions régulières, cinder la variable $text en autant de partie qu'il y a de balises img?

    Ensuite, comment puis-je récupérer 'fond.jpg' dans une autre variable?

    Résultat attendu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tableau= array();
     
    $tableau[0]="<p>titre</p><div>";
    $tableau[1]="</div>";
     
    $var_image='fond.jpg';

    Voilà exactement le résultat que j'aimerais, malheureusement, je manque de pratique avec les regex, et un exemple concret dans ce genre pourrait vraiment m'aider pour la suite de mon développement.

    Je vous avoue avoir lu pas mal de tutoriels sur les regex, comment valider une url, une adresse mail, etc. Ca va, mais là je bloque un peu.

    De plus je ne sais quelle fonction PHP est la plus performante et la moins gourmande en ressource pour effectuer ce genre d'opérations.

    Merci à vous pour vos lumières.

  2. #2
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $test2=preg_replace('#<img src=(.+)/>#i', '$1', $test);
    Je récupère dans $test2 : 'fond.jpg'

    Maintenant, en ce basant sur la chaine suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $test="<p> test </p><div>Texte de bla bla bla <br /><img src='fond.jpg' /></div>";

    Comment récupérer dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tableau[0] => "<p> test </p><div>Texte de bla bla bla <br />";
    $tableau[1] => "'fond.jpg'";
    $tableau[2] => "</div>";
    Un grand merci

  3. #3
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Pour ta premiere question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau = preg_split('#<img[^>]*>#Uis', $text);
    Pour la seconde, voici quelques propositions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    preg_match_all('#<img[^>]*src=([\'"])([^\\1]*)\\1[^>]*>#Uis', $text, $matches);
     
    print_r($matches);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    preg_match_all('#<img[^>]*src=([\'"])(.*)\\1[^>]*>#Uis', $text, $matches);
     
    print_r($matches);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    preg_match_all('#<img[^>]*src=[\'"](.*)[\'"][^>]*>#Uis', $text, $matches);
     
    print_r($matches);

  4. #4
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Hello Korko,

    Merci pour ton aide!

    J'ai trouvé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $test=preg_replace("#<img (.+)/>#isU", '', $test);
    $test=preg_replace("#<div>(.+)</div>#isU", "$1 \n", $test);
    $test=preg_replace("#<p>(.+)</p>#isU", "$1 \n", $test);
    $test=preg_replace("#<br />#isU", "\n", $test);
    Ca marche très bien!

    Par contre, si je veux optimiser en me disant qu'il y aura peut etre des attributs supplémentaires dans la balise <div> ou <p>, je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $test=preg_replace("#<img (.+)/>#isU", '', $test);
    $test=preg_replace("#<div(.+)>(.+)</div>#isU", "$2 \n", $test);
    $test=preg_replace("#<p(.+)>(.+)</p>#isU", "$2 \n", $test);
    $test=preg_replace("#<br />#isU", "\n", $test);

    Mais la deuxième solution ne semble pas fonctionner...

    Une petite idée de mon erreur?

    Merci

  5. #5
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $text = preg_replace('#<img.*>#Uis', '', $text);
    $text = preg_replace('#<div.*>(.*)</div>#Uis', "$1\n", $text);
    $text = preg_replace('#<p.*>(.*)</p>#Uis', "$1\n", $text);
    $text = preg_replace('#<br.*>#Uis', "\n", $text);
    ^^

  6. #6
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Cool!

    Un grand merci

  7. #7
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    You're Welcome

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/04/2010, 15h50
  2. [Excel] Récupération de chaîne et remplacement
    Par Rupella dans le forum Général Python
    Réponses: 5
    Dernier message: 23/01/2009, 21h23
  3. Réponses: 1
    Dernier message: 16/07/2008, 19h46
  4. récupération d'images
    Par MANU_2 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/08/2002, 18h36
  5. Réponses: 4
    Dernier message: 05/06/2002, 12h15

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