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 :

Nettoyage de code html avec preg_replace [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Par défaut Nettoyage de code html avec preg_replace
    Bonjour


    J'applique des preg_replace à du contenu html.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $content = preg_replace("~<titre>(.*)</titre>~","",$content) ;
    $content = preg_replace("~<style(.*)</style>~","",$content) ;
    $content = preg_replace('~<span class="titrepart">(.*)</span>~',"",$content) ;
    Pas de problème, sauf pour une expression, qui n'agit pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content = preg_replace("~<style(.*)</style>~","",$content) ;
    Quelqu'un a t-il la clef de ce mystère ?

    D'avance merci.

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Il manque pas un > ?

    Sinon tu as regardé du coté de strip_tags() ?
    http://us.php.net/manual/fr/function.strip-tags.php

    tu peux y ajouter un second paramètre pour indiquer quels tags tu veux supprimer.

  3. #3
    Membre expérimenté
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Par défaut
    Salut,

    peut etre que les balises style sont sur plusieurs lignes, or par defaut le masque n'agit que sur une ligne,

    Si c'est le cas il faut rajouter un modifier a la fin du masque qui modifiera ce comportement afin de continuer sur plusieurs lignes.

  4. #4
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    comme Seb le dit il manque la fermeture > ...

  5. #5
    Membre expérimenté
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Par défaut
    Citation Envoyé par blueice Voir le message
    comme Seb le dit il manque la fermeture > ...
    ca n'empêchera pas la suppression des balises si elles tiennent sur une ligne.
    L'option de recherche pour le multiligne est "m"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content = preg_replace("~<style(.*)</style>~m","",$content) ;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Par défaut
    Merci de vos réactions.

    Je ne met pas la fermeture exprès, la balise est de la forme <style type="text/css">, mais peut-être pas toujours donc je m'arrête apèrs le e, ça me suffit normalement pour repérer l'ouverure d'un balise style.

    En ce qui concerne strip_tags, j'en fait un après $content = strip_tags($content,"<a>") ;
    celà me permet de récupérer tout le texte de la page nettoyée de ses balises sauf la balise a. Le second paramètre permet d'inquer les tags que l'on veut concerver et non supprimer.

    Ce que je veux, c'est supprimer à la fois la balise style, et ce qu'elle renferme.

    Et effectivement, ce qu'elle renferme est sur plusieurs lignes.

    FFFFFF-000000 : Comment ajouter un modifier à la fin du masque ?

  7. #7
    Membre expérimenté
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Par défaut
    ton masque devient :

    "~<style(.*)</style>~m"

  8. #8
    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 : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Attention à la façon de fonctionner de .*
    Ce dernier prend le maximum de caractères possibles, et s'il n'y avait pas de problème en mode ligne simple, il risque d'y en avoir un en mode multilignes.

    Je vous laisse envisager ce qui se passe sur un exemple de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $str = 'ceci 
    <titre>est une </titre>
    chaine
    <titre>multiligne</titre>
    qui posera problème';
    $content = preg_replace("~<titre>(.*)</titre>~m","",$str) ;

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

Discussions similaires

  1. [DOM] peut on editer du code html avec du javascript?
    Par raul_le_vieux dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/06/2007, 10h26
  2. Editer code HTML avec swing
    Par lilou77 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 01/02/2007, 17h58
  3. interpretation code html avec Persits.MailSender
    Par boss_gama dans le forum ASP
    Réponses: 11
    Dernier message: 07/07/2006, 10h41
  4. Parse code HTML avec PHP
    Par naourass dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2006, 08h12
  5. Insertion code html avec javascript
    Par totoranky dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/02/2006, 16h04

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