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 :

chaine de caractere et tag image [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut chaine de caractere et tag image
    bonjour,

    je cherche un moyen de savoir si dans une chaine de caractere plus precisement dans la balise img si l'attribut border est renseigne auquel cas, cela doit me retrouner true ou false
    sachant que dans cette chaine il peut y avoir plusieurs occurences de la balise img
    j'ai tester pas mal de regex mais sans succés.

    un exemple de deux lignes de code saisi par l'utilisateur :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:pop_image('6435','6435','200','281');"><img width="178" height="250" border="0" align="left" src="http://www.pcinpact.com/images/bdd/news/v-6435.jpg" alt="" style="margin: 5px;" /></a><a href="javascript:pop_image('6435','6435','200','281');"><img width="178" height="250" align="left" src="http://www.pcinpact.com/images/bdd/news/v-6435.jpg" alt="" style="margin: 5px;" /></a>

    je dois trouver un moyen de remplacer style="margin:5px;" par style="margin5px; 1px solid #ff6600" si border="0" n'est pas renseigne

    merci

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Je propose de faire en plusieurs étapes, c'est pas forcément le plus performant, mais est plus facile à maintenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //récupérer le contenu de la balise img, la ligne étant stockée dans $ligne
    $contenu_img = preg_replace("/<img (.*?) \/>/", $1, $ligne);
     
    //test de la présence de border=0
    $test = preg_match("/border=\"0\"/", $contenu_img)
     
    // remplacement
    if (!$test) preg_replace("/style=\"margin:5px;\"/", "style=\"margin5px; 1px solid #ff6600\"/, $ligne);
    ou un truc du genre, je n'ai pas le temps de tester la syntaxe exact...
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    merci je vais tester cela

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Je verrais bien un preg_match_all avec pour masque un truc comme '#<img (.+)>#' et ensuite un strpos du border="0" sur chaque valeur du tableau, si false, un str_replace.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    merci je vais tester les deux methodes
    je reviens pour donner le resultat

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par jml94
    Je propose de faire en plusieurs étapes, c'est pas forcément le plus performant, mais est plus facile à maintenir :

    //récupérer le contenu de la balise img, la ligne étant stockée dans $ligne
    $contenu_img = preg_replace("/<img (.*?) \/>/", $1, $ligne);

    //test de la présence de border=0
    $test = preg_match("/border=\"0\"/", $contenu_img)

    // remplacement
    if (!$test) preg_replace("/style=\"margin:5px;\"/", "style=\"margin5px; 1px solid #ff6600\"/, $ligne);

    ou un truc du genre, je n'ai pas le temps de tester la syntaxe exact...
    oui mais cette methode est valable pour une image

    mais le souci est que l'utilisateur peut saisir une texte et insérer les images ou bon lui semble en fait
    ensuite je dosi parser le texte completement pour le traitement des images qui doivent etre en bordure et celle qui ne doivent pas avoir de bordure de 1px
    pour l'instant la solution que j'avais trouver etait de forcer l'utilisateur a rajouter dans le bordure (formulaire) "0" lors de la saisie de son image pour ne pas ajouter de bordure

    kenji

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    merci pour votre aide
    j'ai reussi a modifier comme ceci si cela interesse je met le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	preg_match_all('#<img (.+?)>#',$texte,$matches);
    	for($i=0;$i<count($matches[1]);$i++){
    		$pos = strpos($matches[1][$i],'border="0"');
    		$pos2 = strpos($matches[1][$i],'class="img_news"');
    		if($pos===false && $pos2===false){
    			//par defaut on entoure en orange
    			$texte = str_replace($matches[1][$i], 'class="img_news" '.$matches[1][$i] ,$texte);
    		}
    	}

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. transformer une chaine de caracteres en image
    Par jsunnyduckk dans le forum 2D
    Réponses: 7
    Dernier message: 16/02/2007, 14h51
  3. Pb Update avec chaine de caractere
    Par JuJu° dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/05/2003, 15h58
  4. [LG]comparaison de chaines de caracteres
    Par thesam dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2003, 22h41
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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