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 15/04/2007, 19h52   #1
Invité régulier
 
Lycéen
Inscription : novembre 2006
Messages : 105
Détails du profil
Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2006
Messages : 105
Points : 8
Points : 8
Par défaut Récuperer une chaîne entre deux tags

Salut

j'aimerais récuperer une chaine contenue en tre deux tags.

pourriez vous m'aider ?
tixweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2007, 20h12   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
En faisant une recherche vous auriez dû trouver :
Code :
1
2
3
4
$string = "début <tag>à capturer</tag> fin.";
if (preg_match('#<tag>(.*)</tag>#Uis', $string, $m)) {
   echo $m[1];
}
Ou une version qui capture toutes les occurences situées entre <tag> et </tag> :
Code :
1
2
3
4
5
6
7
$string = "début <tag>à capturer</tag> milieu <tag>à capturer bis</tag> fin.";
$nbOccurences = preg_match_all('#<tag>(.*)</tag>#Uis', $string, $m);
if ($nbOccurences > 0) { # Test non nécessaire suivant ce que vous faites
    for ($i = 0; $i < $nbOccurences; $i++) {
        echo $m[1][$i] . '<br/>';
    }
}
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2007, 20h32   #3
Invité régulier
 
Lycéen
Inscription : novembre 2006
Messages : 105
Détails du profil
Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2006
Messages : 105
Points : 8
Points : 8
merci beaucoup
:]
tixweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 09h30   #4
Invité régulier
 
Lycéen
Inscription : novembre 2006
Messages : 105
Détails du profil
Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2006
Messages : 105
Points : 8
Points : 8
re-salut

voilà qu'il me faut des-résoudre mon probleme, en effet, j'en ais un autre du meme accabi.

voila mon bout de code :

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
 
$fichier = "http://www.url-quelconque.fr/fichier-quelconque.html";
 
$Tag_STR = addslashes('<div id="tagarecuperer">');
$Tag_STP = addslashes('</div>');
 
$fp = @fopen($fichier,"r");
$texte = "";
 
if($fp)
{
   while(!feof($fp))
   {
   $texte .= fgets($fp,1024);
   }
 
	if (preg_match('#'.$Tag_STR.'(.+)'.$Tag_STP.'#i', $texte , $m)) 
	{ 
		echo $m[1]; 
	}
 
}
else
{
echo("Erreur : Les informations ne peuvent etre récuperées");
}
or, quand j'exécute mon code, rien ne se passe. j'ai testé le morceau de reécuperation de $texte, il marche ..

voyez vous mon erreur ?

merci, ++ Tix.
tixweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 11h38   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Vous n'avez pas besoin d'appliquer addslahes sur $Tag_STR et $Tag_STP d'autant plus que ce traitement est incorrect. (Il manque le fclose également.)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 12h42   #6
Invité régulier
 
Lycéen
Inscription : novembre 2006
Messages : 105
Détails du profil
Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2006
Messages : 105
Points : 8
Points : 8
merci.

Voila mon nouveau code

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
 
$fichier = "http://www.****.fr/bidule.html";
 
$Tag_STR = '<div id="tag"';
$Tag_STP = '</div>';
 
$fp = @fopen($fichier,"r");
$texte = "";
 
if($fp)
{
   while(!feof($fp))
   {
   $texte .= fgets($fp,1024);
   }
 
	if (preg_match('#'.$Tag_STR.'(.+)'.$Tag_STP.'#Uis', $texte , $m)) 
	{ 
		echo $m[1]; 
	}
 
}
else
{
echo("Impossible d'ouvrir la page sélectionnée");
}
 
fclose($fp);
 
?>
...qui refuse d'entendre raison, encore.

voyez vous autre chose ?

merci, ++ Tix.
tixweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 14h24   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
J'ai testé de mon côté et ça fonctionne très bien. Vous devriez enlever l'arobase devant le fopen (pour tester au moins). allow_url_fopen est à on sur votre serveur ? Pas de métacaractères dans le tag ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 19h02   #8
Invité régulier
 
Lycéen
Inscription : novembre 2006
Messages : 105
Détails du profil
Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2006
Messages : 105
Points : 8
Points : 8
merci

bah, écoutez, j'arrive parfaitement à charger mon fichier, le seul truc vien de mon regex apparemment .... je ne sait plus quoi faire.
tixweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 19h34   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Vous ne récupérez absolument rien même en éditant la source de ce que génère ce script ? Il n'y pas d'erreurs dans vos balises (ie &lt;div=&quot;tag&quot; par exemple) ? Elles sont bien présentes sur la page distante au moins ? Je ne vois que ça
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 20h26   #10
Invité régulier
 
Lycéen
Inscription : novembre 2006
Messages : 105
Détails du profil
Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2006
Messages : 105
Points : 8
Points : 8
bien, quand je teste mon preg_match, il ne trouve rien. Je n'ais pas une erreur, et je ne récupere strictement rien coté client. voici mon expression :

Code :
$Tag_MATCH = '#<div id="affiche"><h1>Actualités - News</h1>(.*)</div>#Uis';
...et mes tags sont bien dasn mon fichier externe.

y voyez vous de quoi se facher ?

merci, ++ Tix.
tixweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 18h40   #11
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Et le code que tu analyse c'est quoi ?
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 01h40   #12
Invité régulier
 
Lycéen
Inscription : novembre 2006
Messages : 105
Détails du profil
Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2006
Messages : 105
Points : 8
Points : 8
une page Html quelconque... dans le cas présent, une page de news
tixweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 12h46   #13
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Passe le code complet parceque avec
Code :
1
2
3
4
5
6
7
8
9
<?php
 
$code = '<div id="affiche"><h1>Actualités - News</h1>toto</div>';
 
preg_match('#<div id="affiche"><h1>Actualités - News</h1>(.*)</div>#Uis', $code, $match);
 
print_r($match);
 
?>
Je ne vois pas pourquoi je ne récupererai pas 'toto'
Korko Fain est dé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 02h42.


 
 
 
 
Partenaires

Hébergement Web