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 :

str_replace poussé


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Par défaut str_replace poussé
    Bonjour tout le monde voici mon problème:

    J'ai un éditeur web qui génère du code HTML et pour une image insérée ils fait le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="xxx" style="width: 200px; height: 150px; ..... etc" />
    J'aimerais effacer le "style=" et les points virgules afin d'obtenir un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="xxx" width="200" height="150" ..... etc" />
    Ceci juste pour les balise <img> !

    Pouvez vous m'aider svp? J'essaie de m'en sortir avec la doc mais j'ai du mal...

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Par défaut
    salut, petit indice, utilise deux tableaux
    un tableau $old
    et un tableau $new.
    tu fais correspondre la clé du tableau pour les remplacement .
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $old[0] // chaine recherchée
    $new[0] //chaine remplacée
    et dedans tu inclus un effacement de style="
    et du guillemet de fin
    et après tu remplace les : par des =
    et tu supprimes les ;
    je te laisse chercher la suite, c'est + formateur

  3. #3
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Fais donc ça avec une regexp, c'est encore ce qu'il y a de plus puissant dans ce cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $xhtml = '<img src="xxx" style="width: 200px; height: 150px;" width="100" alt="test" />';
    var_dump(preg_replace('#(<img.+)( style="[^"]*")(.*/>)#', '$1$3', $xhtml));
    Les editeurs graphiques et autres dreamweaver sont à éviter, le code produit n'est jamais bon.

    Enjoy.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Par défaut
    Merci à tous les deux, mais il me semble que la 2ème solution est plus adéquate effectivement car la première me bloque au niveau où je ne sais pas comment effectuer ce str_replace sur une portion du code html (que sur les balise <img> d'un textarea).

    En fait il s'agit d'un CKeditor sur un textarea et non un éditeur graphique

    J'ai testé le code que tu m'as donné, il supprime carrément tout le style! il faut que je regarde comment extraire les infos..

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Et voilà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $xhtml = '<img src="xxx" alt="yyy" style="width: 300px; height: 80px;" title="zzz" />';
     
    $pattern = '#(<img .*) style="[^"]*width: ([0-9]+)px;[^"]*height: ([0-9]+)px[^"]*" (.*/>)#';
    $replace = '$1 width="$2" height="$3" $4';
     
    var_dump(preg_replace($pattern, $replace, $xhtml));
    Ce n'est peut être pas la façon la plus optimale de faire... Peut être que quelqu'un de plus calé que moi en regexp apporter quelques améliorations.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    moi j'ai une question :

    A quoi ça sert ?

Discussions similaires

  1. Problème avec str_replace()
    Par vinche999 dans le forum Langage
    Réponses: 6
    Dernier message: 13/02/2006, 10h23
  2. pb str_replace
    Par splouf dans le forum Langage
    Réponses: 4
    Dernier message: 30/01/2006, 19h00
  3. PHP str_replace
    Par carlos20 dans le forum Langage
    Réponses: 14
    Dernier message: 02/12/2005, 16h57
  4. [RegEx] str_replace qui veut pas replacer
    Par lamoufle dans le forum Langage
    Réponses: 5
    Dernier message: 13/09/2005, 13h37

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