Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/11/2011, 16h47   #1
Invité régulier
 
Inscription : février 2003
Messages : 7
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 7
Points : 7
Points : 7
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 :
<title>Mon titre de page joli</title>
Devient:

Code :
<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 :
$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 :
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 :
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
oracle_home est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 16h51   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 136
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 136
Points : 8 498
Points : 8 498
l’intérêt premier c'est quoi ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 10h32   #3
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
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)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 10h38   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 136
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 136
Points : 8 498
Points : 8 498
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
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h39.


 
 
 
 
Partenaires

Hébergement Web