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 19/02/2011, 09h34   #1
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 125
Points : 35
Points : 35
Par défaut Regex et boucle foreach

Bonjour,

Il m'arrive quelque chose de curieux.
J'utilise un Regex pour supprimer toutes les images (<img src="..." width="..." height="..." etc...>) d'un texte.

Le voici :
Code :
$texte = preg_replace('/<img([^<>+]*)>/i','',$texte);
Hors d'une boucle foreach, il fonctionne bien. Cependant, une fois intégré à une boucle qui lit un tableau de flus RSS, cela ne fonctionne plus.

Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php
 
        $i=1;
        foreach($rss as $tab){
 
		    $texte = preg_replace('/<img([^<>+]*)>/i','',$tab[2]);
 
			if($i<=6){    
                ?>
                <li style="background-color:<?=(($ligne++ % 2)?"#E1D6BB":"#FFFFFF")?>; padding:10px">
                   <span style="color:#F60"><?=date("d/m/Y",strtotime($tab[3]))?></span> - <b><?=$tab[0]?></b>
                   <p style="text-align:justify; padding:0; margin:0 0 5px 0"><?=$texte?></p> <a href="<?=$tab[1]?>">Lire la suite</a>
                </li>
            <?php
            }
 
        $i++;
        }
        ?>
Auriez vous une idée qui pourrait m'indiquer pourquoi cela ne fonctionne pas ?

Merci
Flushovsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 10h20   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
as-tu un exemple de flux en entrée pour lequel ca ne fonctionne pas ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 10h25   #3
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 125
Points : 35
Points : 35
Voici la récupération du flux RSS de l'informaticien.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
<?php
function lit_rss($fichier,$objets) {
 
	// on lit tout le fichier
	if($chaine = @implode("",@file($fichier))) {
 
		// on découpe la chaine obtenue en items
		$tmp = preg_split("/<\/?"."item".">/",$chaine);
 
		// pour chaque item
		for($i=1;$i<sizeof($tmp)-1;$i+=2)
 
			// on lit chaque objet de l'item
			foreach($objets as $objet) {
 
				// on découpe la chaine pour obtenir le contenu de l'objet
				$tmp2 = preg_split("/<\/?".$objet.">/",$tmp[$i]);
 
				// on ajoute le contenu de l'objet au tableau resultat
				$resultat[$i-1][] = @$tmp2[1];
			}
 
		// on retourne le tableau resultat
		return $resultat;
	}
}
 
// Lecture du FLUX XML sur le serveur
$rss = lit_rss("http://www.linformaticien.com/DesktopModules/Orizonti_NukeNews/getRSS.aspx?pid=0&tid=58&mid=496&cnt=5",array("title","link","description","pubDate"));
?>
Flushovsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 10h45   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Dans ta source tu n'as pas <IMG mais &lt;IMG
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 10h54   #5
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 125
Points : 35
Points : 35
Merci à toi Sabotage, c'était encore un truc con.
Rien de tel qu'un regard extérieur pour dérouiller tout ça.

Allez hop, résolu.
Flushovsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h22.


 
 
 
 
Partenaires

Hébergement Web