Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

[reglé] Contenu entre 2 balises - PHP

Poster un nouveau sujet Imprimer cette discussion    Forum -> Administration d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
rottman
WRInaute accro
WRInaute accro

Inscrit le: 06 Jan 2004
Messages: 2096

URL permanente de ce messagePosté le : Ven Juil 08, 2005 12:15    Sujet du message: [reglé] Contenu entre 2 balises - PHP

Bonjour,

Je bloque sur un truc pourtant tout simple ! Embarassed

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:

$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 occasionnel
WRInaute occasionnel

Inscrit le: 18 Oct 2004
Messages: 151
Localisation: Dans les bras de Morphée

URL permanente de ce messagePosté le : Ven Juil 08, 2005 12:25    Sujet du message: [reglé] Contenu entre 2 balises - PHP

Very Happy Hello,

Je n'ai pas testé, mais essaie ça:

Code:
<?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... Very Happy
 
magicaxe Visiter le site web du posteur
shrom
WRInaute passionné
WRInaute passionné

Inscrit le: 05 Juil 2004
Messages: 866

URL permanente de ce messagePosté le : Ven Juil 08, 2005 12:25    Sujet du message: [reglé] Contenu entre 2 balises - PHP

Code:
$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
 
shrom Visiter le site web du posteur
jeroen
WRInaute accro
WRInaute accro

Inscrit le: 30 Aoû 2002
Messages: 2322

URL permanente de ce messagePosté le : Ven Juil 08, 2005 12:30    Sujet du message: [reglé] Contenu entre 2 balises - PHP

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...
 
jeroen
shrom
WRInaute passionné
WRInaute passionné

Inscrit le: 05 Juil 2004
Messages: 866

URL permanente de ce messagePosté le : Ven Juil 08, 2005 12:39    Sujet du message: [reglé] Contenu entre 2 balises - PHP

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 Visiter le site web du posteur
rottman
WRInaute accro
WRInaute accro

Inscrit le: 06 Jan 2004
Messages: 2096

URL permanente de ce messagePosté le : Ven Juil 08, 2005 12:43    Sujet du message: [reglé] Contenu entre 2 balises - PHP

Sad ça me fait balise non trouvée
 
shrom Visiter le site web du posteur
shrom
WRInaute passionné
WRInaute passionné

Inscrit le: 05 Juil 2004
Messages: 866

URL permanente de ce messagePosté le : Ven Juil 08, 2005 12:50    Sujet du message: [reglé] Contenu entre 2 balises - PHP

Ouaip, j'avais encore fais une petite erreur, essaie avec ça:
Code:
$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.
 
shrom Visiter le site web du posteur
rottman
WRInaute accro
WRInaute accro

Inscrit le: 06 Jan 2004
Messages: 2096

URL permanente de ce messagePosté le : Ven Juil 08, 2005 12:54    Sujet du message: [reglé] Contenu entre 2 balises - PHP

Ouf, GRAND MERCI à vous tous.
 
shrom Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Administration d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort