[reglé] Contenu entre 2 balises - PHP
9 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
-

rottman - WRInaute passionné

- Messages: 2121
- Inscription: 6 Jan 2004
[reglé] Contenu entre 2 balises - PHP
Bonjour,
Je bloque sur un truc pourtant tout simple !
J'ai une chaine, plus précisément la source d'une page, et je souhaite extraire le contenu entre les Xième <balise> et </balise>.
Voila ce que j'ai essayé sans succès :
Je bloque sur un truc pourtant tout simple !
J'ai une chaine, plus précisément la source d'une page, et je souhaite extraire le contenu entre les Xième <balise> et </balise>.
Voila ce que j'ai essayé sans succès :
- Code: Tout sélectionner
$src = @implode("", file("page.html"));
if(eregi("<balise>(.*)</balise>",$src))
{
eregi("<balise>(.*)</balise>",$src,$nb);
echo $nb[X];
}
else echo "<balise> non trouvée";
Dernière édition par rottman le Ven Juil 08, 2005 12:56, édité 1 fois.
-

magicaxe - WRInaute discret

- Messages: 151
- Inscription: 18 Oct 2004
Je n'ai pas testé, mais essaie ça:
- Code: Tout sélectionner
<?php
$pos = 0;
for($i = 0; $i < X && $pos !== false; $i++)
$pos = strpos($content, "<balise>", $pos);
if ($pos !== false)
{
$posend = strpos($content, "</balise>", $pos) ;
if ($posend !== false)
{
$str = substr ( $content, $pos + strlen("<balise>"), $posend - ($pos+strlen("<balise>")));
//process $str ...
}
}
?>
En détail, tu recherche la Xième position de la balise
Ensuite, tu recherche la première position de la balise fermante à partir de la position de la Xième balise.
Ensuite tu récupère le texte entre deux...
- shrom
- WRInaute impliqué

- Messages: 865
- Inscription: 5 Juil 2004
- Code: Tout sélectionner
$src = file_get_contents("page.html");
preg_match_all( "/<balise>(.*)<\/balise>/U", $src, $match );
if ( count( $match[1] ) > $x ) {
echo 'Balise trouvée: '.$match[1][$x+1];
}
else {
echo 'Balise non trouvée.';
}
Edité: j'avais oublié le U dans le pattern.
Dernière édition par shrom le Ven Juil 08, 2005 12:41, édité 2 fois.
- jeroen
- WRInaute passionné

- Messages: 2455
- Inscription: 30 Aoû 2002
Salut,
Le problème est que les REGEX sont gourmandes.
Avec ton code tu va englober de la première <balise> à la dernière </balise> sur la première occurence de recherche.
Il faut que ton (.*) empèche de prendre </balise>
Généralement le bidouille :
1/ Je remplace <balise> par un caractère spécial gamais utilisé (<¤> par exemple) et </balise> par </¤> (exemple)
2/ je recherche
eregi("<¤>([^¤]*)</¤>",$src,$nb);
Si y'a plus simple, je suis preneur aussi...
Le problème est que les REGEX sont gourmandes.
Avec ton code tu va englober de la première <balise> à la dernière </balise> sur la première occurence de recherche.
Il faut que ton (.*) empèche de prendre </balise>
Généralement le bidouille :
1/ Je remplace <balise> par un caractère spécial gamais utilisé (<¤> par exemple) et </balise> par </¤> (exemple)
2/ je recherche
eregi("<¤>([^¤]*)</¤>",$src,$nb);
Si y'a plus simple, je suis preneur aussi...
- shrom
- WRInaute impliqué

- Messages: 865
- Inscription: 5 Juil 2004
jeroen a écrit:Avec ton code tu va englober de la première <balise> à la dernière </balise> sur la première occurence de recherche.
Exact, j'ai édité le code pour ajouter le paramètre U dans le pattern qui permet de ne pas avoir de REGEXP gourmandes.
- shrom
- WRInaute impliqué

- Messages: 865
- Inscription: 5 Juil 2004
Ouaip, j'avais encore fais une petite erreur, essaie avec ça:
Si tu veux la seconde occurence, $x = 2.
- Code: Tout sélectionner
$src = file_get_contents("page.html");
preg_match_all( "/<balise>(.*)<\/balise>/U", $src, $match );
if ( count( $match[1] ) >= $x ) {
echo 'Balise trouvée: '.$match[1][$x-1];
}
else {
echo 'Balise non trouvée.';
}
Si tu veux la seconde occurence, $x = 2.
-

sim100 - WRInaute passionné

- Messages: 1431
- Inscription: 2 Fév 2003
Re: [reglé] Contenu entre 2 balises - PHP
Bonjour
J'ai essayé le code comme ça
Et ça ne me sort pas TEST, j'ai juste un "Balise trouvée:" et c'est tout.
Je n'arrive pas à le faire marcher
Quelqu'un a essayé?
Merci beaucoup
J'ai essayé le code comme ça
- Code: Tout sélectionner
preg_match_all( "/<balise>(.*)<\/balise>/U", "<balise>TEST</balise>", $match );
if ( count( $match[1] ) >= $x ) {
echo 'Balise trouvée: '.$match[1][$x-1];
}
else {
echo 'Balise non trouvée.';
}
Et ça ne me sort pas TEST, j'ai juste un "Balise trouvée:" et c'est tout.
Je n'arrive pas à le faire marcher
Quelqu'un a essayé?
Merci beaucoup
9 messages
• Page 1 sur 1
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 les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- remplacer le contenu de balises title par un autre contenu
- Règle au sujet des balises <H1>
- image entre les balises Hn [reglé]
- Les balises h avec du contenu
- Test balises meta, contenu et liens
- Répétition du contenu dans les balises Meta
- Google me met le contenu de mes balises alt en description
- Protéger le contenu des balises Meta contre la copie
- [PHP] Pb email / balises
- Balises titles à changer/ PHP
- Balises meta et référencement : les bases à savoir - 04-08-2008
- Google Code publie des statistiques sur le codage HTML des pages web - 25-01-2006
- Description d'une page-type optimisée pour le référencement - 04-08-2008
- Balises meta Syndication source, original source - 30-11-2010
- Référencement : faut-il abandonner les balises META ? - 12-09-2006
- Conclusion sur l'analyse du PageRank de Google - 06-09-2008
- HTML 5 : quel impact sur le référencement ? - 25-01-2008
- Une check-list pour bien démarrer son référencement - 21-02-2007
Consultez la description détaillée des produits ou services de Google suivants : Google Base
- Calculer le ratio de liens profonds
Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
