Probleme avec une expression regulière

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

Lauweb
Nouveau WRInaute
 
Messages: 15
Inscription: Sam Fév 22, 2003 3:51

Probleme avec une expression regulière

Message le Ven Avr 09, 2004 15:40

Bonjour,

Je cherche à ne garder que le texte de certaines de mes pages afin d'en faire des fichiers texte.
La fonction strip_tags élimine bien toutes les balises mais pas l'interieur des balises <script> et <style>


Voici le script:
Code: Tout sélectionner
<?
$fd = fopen ("mapage.php", "r");
while (!feof ($fd))
{
$buffer = fgets($fd, 4096);
$buffer = strip_tags($buffer, '<title>');
$buffer = trim($buffer);
$buffer = eregi_replace("<title>(.*)</title>", "", "$buffer");
$buffer = eregi_replace("l'expression regulière que je cherche pour eliminer le contenu des balises scripts", "", "$buffer");

echo $buffer;
}
fclose($fd);
?>


J'ai don essayé des tas de choses comme:
Code: Tout sélectionner
$buffer = preg_replace ('^<script(.*)>(.*)</script>$', " ", $buffer);

Mais ça ne donne rien!

Quelqu'un connait il une expression regulière ou une autre manière pour épurer completement une chaine de caractere?

Merci de votre aide precieuse.

Lauweb
Nouveau WRInaute
 
Messages: 15
Inscription: Sam Fév 22, 2003 3:51

Message le Sam Avr 10, 2004 17:59

Non? personne n'a une petite idée?

Le script est sur le point de fonctionner, il semble que c'est une histoire d'espaces et de sauts de ligne qui empêche la bonne execution du script...

Si la page à traiter est de cette forme:
Code: Tout sélectionner
<script>mafonction(){blableblibloblu}</script>
.....corps de la page.....

ça marche

Si la page à traiter est de cette forme (avec des sauts de ligne):
Code: Tout sélectionner
<script>
mafonction(){blableblibloblu}
</script>
.....corps de la page.....

ça ne marche pas


Pourtant, j'ai bien enlevé les /n et les /r
Voir le code actuel:
Code: Tout sélectionner
<?
$fd = fopen (monfichier.php, "r");
while (!feof ($fd))
{
$buffer = fgets($fd, 4096);
$buffer = str_replace(array("\n","\r"),array("",""),$buffer);
$buffer = preg_replace("/<script[^>]*>.*<\/script>/isU","",$buffer);
echo $buffer;
}
fclose($fd);
?>


Si quelqu'un peut m'eclairer, j'en serais ravi.
Merci d'avance.


George Abitbol
WRInaute accro
WRInaute accro
 
Messages: 1923
Inscription: Ven Juin 06, 2003 7:57

Message le Sam Avr 10, 2004 18:02

Lauweb a écrit:Le script est sur le point de fonctionner, il semble que c'est une histoire d'espaces et de sauts de ligne qui empêche la bonne execution du script...


Alors utilise l'option de recherche s, pour ta regex.
http://fr2.php.net/manual/fr/pcre.pattern.modifiers.php

Fred

Lauweb
Nouveau WRInaute
 
Messages: 15
Inscription: Sam Fév 22, 2003 3:51

Message le Sam Avr 10, 2004 18:17

Merci George

Mais j'utilise déjà cette option:
Code: Tout sélectionner
$buffer = preg_replace("/<script[^>]*>.*<\/script>/isU","",$buffer);


Je bloque...


George Abitbol
WRInaute accro
WRInaute accro
 
Messages: 1923
Inscription: Ven Juin 06, 2003 7:57

Message le Sam Avr 10, 2004 18:47

Ah oui, en effet. En fait je crois que tu devrais d'abord récupérer tout le contenu dans ta variable et après seulement faire le traitement sur cette variable. Parce que là tu traites ligne par ligne donc effectivement les motifs ne correspondent pas.

Fred

Lauweb
Nouveau WRInaute
 
Messages: 15
Inscription: Sam Fév 22, 2003 3:51

Message le Sam Avr 10, 2004 19:00

Oui... euh... et comment tu fais ça?


George Abitbol
WRInaute accro
WRInaute accro
 
Messages: 1923
Inscription: Ven Juin 06, 2003 7:57

Message le Sam Avr 10, 2004 19:04

Ben au lieu d'écraser la valeur de $buffer à chaque ligne parcourue, tu concatènes à la suite et à la fin de ta boucle tu auras tout le contenu dans $buffer. L'opérateur de la concaténation est le point.

Fred

Lauweb
Nouveau WRInaute
 
Messages: 15
Inscription: Sam Fév 22, 2003 3:51

Message le Sam Avr 10, 2004 19:08

Désolé je n'ai jamais eu l'occasion de faire ce genre de concatenation

Si tu pouvais me montrer, j'apprendrais quelque chose

Merci à toi, Fred


George Abitbol
WRInaute accro
WRInaute accro
 
Messages: 1923
Inscription: Ven Juin 06, 2003 7:57

Message le Sam Avr 10, 2004 19:14

Code: Tout sélectionner
<?php
$buffer = '';
$fd = fopen ("mapage.php", "r");
while (!feof ($fd)) {
  $buffer .= fgets($fd, 4096);
}
fclose($fd);
?>


Et ensuite seulement tu fais ton traitement.

Fred

Lauweb
Nouveau WRInaute
 
Messages: 15
Inscription: Sam Fév 22, 2003 3:51

Message le Sam Avr 10, 2004 20:13

Genial! ça marche! Je n'y aurais pas pensé,

Fred, tu m'as enlevé une sacrée épine du pied, ça faisait 1 semaine que j'étais la dessus...

Merci encore :P


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités