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 :

transformer chaine en code html balises img [RegEx]


Sujet :

Langage PHP

  1. #1
    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 transformer chaine en code html balises img
    Bonjour a tous,
    Merci pour l'attention porté a ce post.
    Je suis débutant dans les expressions régulières et j'ai un peu de mal avec. Aprés avoir passer 2heures sans sucés sur le problème je demande un peu d'aide.

    Voila mon problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $s_input ="<gallery>Fichier:Exemple.jpg|[[Tournesol]] Fichier:Exemple1.jpg|[[La Joconde]] Fichier:Exemple2.jpg|Un [[hamster]]</gallery>";
     
    $s_input = preg_replace('#<gallery>(Fichier:(.*)\|(\[*|.*)(.*|\]*))*</gallery>#', '<img src="$2"', $s_input);
     
    do_dump($s_input);
    Dans un premier temps je souhaiterais remplacer les images par img src='le nom de l'image'.

    J'explique ma logique :

    1. tous ce qui se trouve dans galery peut etre répété 1 ou plusieur fois (dou la parenthése général suivit de * => (Fichier.*)\|(\[*|.*).*\]*)* <=.
    2. ce qui se trouve entre Fichier jusque | => Fichier.*)\| <=
    3.(\[*|.*) => on peux avoir soit plusieurs crochets soit du texte direct (Exemple2.jpg|Un [[hamster]] ou Exemple2.jpg|[[Un hamster]] on peux aussi avoir que du texte)
    4. on a du texte ou plusieur ]

    Le resultat pour le moment => 1 image avec pour src toute la chaine presque.

    A force de bidouiller j'ai réussit a avoir 3 img mais la la src n'etais pas correct.

    Voila merci a ceux qui répondrons.
    Bon code a tous.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    que fait on du un à l'extérieur des crochets ?
    Un [[hamster]] ou Exemple2.jpg|[[Un hamster]] on peux aussi avoir que du texte)
    je suppose que par la suite c'est pour le title ou le alt de la balise image ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    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
    alors ce qui se trouve derière le | pour moi correspond a une légende et ce qui se trouve entre crochets est un lien dans la légende (url.com/truc entre crochet).

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    il y a certainement plus classe, masi ça fait le taff:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $chaine="<gallery>Fichier:Exemple.jpg|[[Tournesol]] Fichier:Exemple1.jpg|[[La Joconde]] Fichier:Exemple2.jpg|[[hamster]]</gallery>";
    $reg="#:(?P<src>[^\|]*)\|(\[)+(?P<alt>[^\]]*)(\])+#";
    preg_match_all($reg,$chaine,$matches);
    $out="";
    $i=0;
    foreach ($matches['src'] as $src=>$value){$out.='<img src="'.$value.'" alt="'.$matches['alt'][$i++].'" />' ;
    }
    echo htmlentities($out);
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  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
    Merci pour la réponse rapide.
    Est ce que tu peux me donner quelques explications sur l'expression stp ?
    #?P<src>[^\|]*)\|(\[)+(?P<alt>[^\]]*)(\])+#

    a partement le fait de faire P<quelques choses> permet de créer dans le tableau match l'index quelques choses.

    est ce que tu peux m'expliquer pourquoi on utilise ? => le : doit être présent et peux être répété ?

    ensuite on prend tous ce qui est différent de | => [^\|]* donc entre : et |

    ensuite on a encore le \| en dehors des parenthèses. pourquoi le [\|] ne suffit il pas a stopper ce qu'on recherche ?

    et ensuite on reprend ce qui se qui est différent de \] => [^\] et la encore une fois on répète aprés avec (\]).

    En tt cas merci pour la réponses, si c'est possible d'avoir quelques explications se serait super cool. Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    il s'agit de groupe nommés
    il permettent ensuite dans les matchs de recupérer des array litteraux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $matches['src']
    $matches['alt']
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    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
    Je suis POUR mettre le tags résolu mais est ce que tu peux me donnés des explications par rapport a mon dernier post stp ? sur le contenu de l'expression les [^\] que j'ai pas compris pourquoi certains était répété.
    sinon le probléme que j'ai avec le preg_match_all c'est qu'il me chope toutes les "gallery" que j'ai dans ma variable même si elle sont a des endroits différentes donc après j'ai du mal a les remettre a leur bon emplacement.

    Vu que mon explication est une peu vague le but de mon jeux est de remplacer le "wiki texte" par de l'html.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    : placer au debut du nome de fichier

    <?P<src> ouverture et nommage du groupe
    [^\|]*) prendre tous les caractères qui ne sont pas | et fermer le groupe
    \| le séparateur
    (\[)+ les crochets ouvrants pour le alt
    (?P<alt> ouvrir le groupe et le nommer alt
    [^\]]*) prendre tous les caractères qui ne sont pas ] et fermer le groupe
    (\])+ crochets fermants du alt
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    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 Merci
    oki, merci beaucoup ca marche niquel, bonne continuation.

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

Discussions similaires

  1. supprimer toutes les balises d'un code html (regex?)
    Par le y@m's dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2014, 11h08
  2. [Encodage] Conversion d'une chaine en code html
    Par soufian1364 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2013, 14h21
  3. [XSLT] transformation xml en code html
    Par SkyBack dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/11/2009, 11h02
  4. [XSLT][>HTML] balise IMG disparue
    Par lguittet dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 22/08/2006, 12h54
  5. [HTML] [CSS] href et balise img.
    Par Devil666 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 15/06/2005, 18h03

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