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 pour remplacer bbcode et img [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de gwena54
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut regex pour remplacer bbcode et img
    Bonjour,
    je suis en train de créer un petit script de BBCODE permettant de faire des mises en pages simples...
    dans un souci d'esthétique, je voudrais que les images présentes dans un articles soient positionnées comme je veux avec l'aide des css, je souhaiterais donc que chaque image ait sa propre classe css.
    pour y parvenir j'ai modifié mon code de base pour arriver à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $i=0;
    preg_match_all("'\[img=http://(.*?)\]'", $texte, $result,PREG_PATTERN_ORDER);
    foreach ($result as $data){
    	$texte = preg_replace("'\[img=http://(.*?)\]'","<img src=\"http://".$result[1][$i]."\" hspace=\"5\" title=\"$i\">",$texte);
    	$i++;	
    	}
    je sens que j'y suis presque mais je bloque, toutes mes images sont remplacées par la dernière et le $i ne prend pas la valeur incrémentée et reste à 0...

    en gros quand dans mon contenu texte, le script trouve les tag [ i m g = http://... ] il doit le remplacer par les balises html adéquates avec en plus le class="img1"...

    est ce que j'ai été assez clair, je m'embrouille assez souvent je dois dire
    merci de votre aide!
    Gwen

  2. #2
    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
    $texte = preg_replace("'\[img=http://(.*?)\]'","<img src=\"http://\\1\" hspace=\"5\" title=\"$i\">",$texte);

  3. #3
    Membre du Club Avatar de gwena54
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    merci de ta réponse, mais peu importe que ce soit $1 ou \\1!
    dans les 2 cas le remplacement du bbcode marche de toute façon

    ce que je cherche à faire, c'est mettre un numéro (avec $i) pour chaque image (la je l'ai mis dans le title, mais c'est pour l'exmple)!
    de cette manière je pourrai leur attribuer une classe me permettant de les positionner ou bon me semble en css!

  4. #4
    Membre du Club Avatar de gwena54
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    voilà, il suffisait d'utiliser ce code!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    preg_match_all("'\[img=http://(.*?)\]'", $texte, $result,PREG_PATTERN_ORDER);
    foreach ($result[0] as $data){
    	$texte = preg_replace("'\[img=http://(.*?)\]'","<img src=\"http://\\1\" hspace=\"5\" title=\"$i\">",$texte,1);
    	$i++;
    	}
    merci quand meme, ça m'a permis de réfléchir un peu plus

  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
    ta pas l'impression de te compliquer la vie ? A faire un preg_match_all et un preg_replace
    Si tu fesait un preg_replace_callback comme ça sa serait beaucoup plus leger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function callback_function($match)
    {
        static $i = 0;
        $i++;
        return '<img src="http://$1" hspace="5" title="'.$i.'">';
    }
     
    $texte = preg_replace("'\[img=http://(.*?)\]'", 'callback_function', $texte);

  6. #6
    Membre du Club Avatar de gwena54
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    ha ben oui
    bon ben merci de l'info!

  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
    De rien ^^

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

Discussions similaires

  1. Regex pour remplacer une chaine par un lien
    Par lerorodu51 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/03/2014, 15h52
  2. [RegEx] caractère pour remplacer tous les caractères dans une regex
    Par sp2308 dans le forum Langage
    Réponses: 6
    Dernier message: 09/02/2008, 01h06
  3. Utiliser Regex pour remplacement
    Par soveste dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 19/03/2007, 09h48
  4. [Notepad++] utiliser regex pour remplacer des caractères
    Par ilood dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 04/02/2007, 04h06

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