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 :

Remplacer un caractère dans un fichier HTML en excluant toutes les balises (pb multilignes)


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 8
    Points : 15
    Points
    15
    Par défaut Remplacer un caractère dans un fichier HTML en excluant toutes les balises (pb multilignes)
    Bonjour,

    Je cherche à remplacer dans un fichier HTML toutes les lettres "i" par "****".
    Je veux que ce remplacement ne s'effectue que pour le texte situé en dehors des balises HTML, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <title>Mon titre de page joli</title>
    Devient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <title>Mon t****tre de page jol****</title>
    J'ai récupéré un bout de code qui me permet la modification ci-dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content = preg_replace("'(?!<.*?)i(?![^<>]*?>)'s", "****", $content);
    Cela fonctionne plutôt bien, mais lorsqu'il y a du javascript dans le fichier HTML, le code ci-dessus affecte également ce qui se trouve entre les balises javascript. Or je voudrais exclure également tout le code javascript qui se trouve entre deux balises <script...>code javascript</script>.

    Par exemple, actuellement, j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    title>mon t****tre</title>
    <head>
    <script type="text/javascript">
     
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-4235074-6']);
      _gaq.push(['_trackPagev****ew']);
     
      (funct****on() {
        var ga = document.createElement('scr****pt'); ga.type = 'text/javascr****pt'; ga.async = true;
        ga.src = ('https:' == document.locat****on.protocol ? 'https://ssl' : 'http://www') + '.google-analyt****cs.com/ga.js';
        var s = document.getElementsByTagName('scr****pt')[0]; s.parentNode.****nsertBefore(ga, s);
      })();
     
    </script>
    </head>
    <body>
     <div id="page">
    lorem ****psum dolor s****t
     <div id="navigation">
    &raquo; <a href="lien.php" title="Créer site">Créer s****te ****nternet</a>
    Notez le code javascript que je souhaite préserver, et qui est tout abimé

    Je voudrait donc obtenir la même chose que ci-dessus, mais sans altération du code javascript:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <title>mon t****tre</title>
    <head>
    <script type="text/javascript">
     
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-4235074-6']);
      _gaq.push(['_trackPageview']);
     
      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
     
    </script>
    </head>
    <body>
     <div id="page">
    lorem ****psum dolor s****t
     <div id="navigation">
    &raquo; <a href="lien.php" title="Créer site">Créer s****te ****nternet</a>
    Je pense que le problème vient du fait que le code javascript est sur plusieurs lignes, mais je n'arrive vraiment pas à voir comment faire

    Merci par avance

  2. #2
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    l’intérêt premier c'est quoi ?

  3. #3
    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
    Citation Envoyé par stealth35 Voir le message
    l’intérêt premier c'est quoi ?
    N'est-ce pas le moment ou tu rappelles qu'il faut utiliser DOMDocument pour manipuler le DOM ?

    • 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

  4. #4
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par s.n.a.f.u Voir le message
    N'est-ce pas le moment ou tu rappelles qu'il faut utiliser DOMDocument pour manipuler le DOM ?

    peu être plus tard, ça dépendra de sa réponse

Discussions similaires

  1. [batch] Remplacement de caractères dans un fichier
    Par Antoun dans le forum Windows
    Réponses: 18
    Dernier message: 25/04/2008, 18h14
  2. Remplacer un caractère dans un fichier texte
    Par steelk dans le forum Excel
    Réponses: 36
    Dernier message: 29/01/2008, 15h10
  3. Réponses: 14
    Dernier message: 15/06/2007, 13h59
  4. Réponses: 3
    Dernier message: 27/06/2005, 16h24
  5. Réponses: 5
    Dernier message: 25/01/2005, 14h26

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