IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilisation de regex


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Utilisation de regex
    Bonjour,

    J'ai besoin d'extraire à partir d'un code HTML (ci-dessous) les informations telles que "FIESTA ERASMUS" et /event/83318

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	<div id="tab-soiree" class=""><div class="soireeagenda cat_1">	
    				<a href="/event/83318/" class="lienFly"><img src="http://www.parisbouge.com/img/fly/resize/100/83318.jpg" alt="fiesta erasmus" class="fly"></a>
    					<ul>
    						<li class="nom"><h2><a href="/event/83318/">FIESTA ERASMUS</a> </h2></li>
    						<li class="genre" style="margin-bottom:4px;">
    						<a href="/soirees-etudiantes/paris/1/" style="color:inherit;" title="soirée étudiante">soirée étudiante</a>				</li>
    						<li class="lieu"><a href="/club/paris/10/duplex">Duplex</a></li>				<li class="musique">house, electro, r&b chic, latino, disco</li>
    						<li class="pass-label">pass</li>				</ul>
    						  <a href="/club/paris/10/duplex" title="duplex"><img src="/img/salles/resize/50/10.jpg" alt="duplex" class="flysalle"></a>
    					 <hr class="clearleft">
    			</div>
    J'ai un peu de mal avec preg_match...

    Help

    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    J'ai réussi à faire ce que je voulais tester plus haut.

    Je bute sur un autre problème :

    Je souhaite récupérer de manière structurer l'ensemble des évènements de cette page web http://www.parisbouge.com/events/2012/05/01/
    en récupérant le nom de l'évènement et le lieu.

    J’exécute mon code ci-dessous et il plante complétement... Page Web inaccessible.

    Si quelqu'un peut m'aider à l'optimiser ... SVP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    <?php
    	// Récupérer code source HTML de la page web
    	$url = "http://www.parisbouge.com/events/2012/05/01/";
    	$html = file_get_contents($url);	
    	$html = "<<<EOS".$html."EOS";
     
    	// Compter nombre d'évènements
    	$event = '<li class="nom">';
    	$nb_event=substr_count($html,$event);
    	echo "il y a : ".$nb_event. "event";
     
    	// Construction du pattern
    	$pattern='`<div id="tab-soiree".*?';
    	$i=0;
    	while($i<($nb_event-50)){
    		$pattern .='<li class="nom">.*?<a href="([^"]+)">([^<]+)</a>.*?<li class="lieu".*?>(<a href=".*?">)?([^<]+).*?';
    		$i++;
    	}
    	$pattern .='`si';
     
    	// Execution du pattern	
    	preg_match($pattern, $html, $out);
     
    	// Afficher les résultats
    	$i=1;
    	while($i<($nb_event*3)){
    		if(count($out)) {
    			$url=$out[$i];
    			$nom=$out[$i+1];
    			$lieu=$out[$i+3];
    			echo "<br/>url : $url nom : $nom lieu : $lieu";
    		}
    		else {
    			echo 'Pas trouvé.';
    		}
    		$i= $i +4;;
    	}
    ?>

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Avril 2009
    Messages : 168
    Points : 122
    Points
    122
    Par défaut
    bonjour chabliya,

    quelques remarques:
    dans ce while:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Construction du pattern
    	$pattern='`<div id="tab-soiree".*?';
    	$i=0;
    	while($i<($nb_event-50)){
    		$pattern .='<li class="nom">.*?<a href="([^"]+)">([^<]+)</a>.*?<li class="lieu".*?>(<a href=".*?">)?([^<]+).*?';
    		$i++;
    	}
    	$pattern .='`si'; //attention, je suppose que c'est $i au lieu de si
    pourquoi fais tu $nb_event-50 ? qu'est ce qui se passe si cette différence donne un nombre négatif ?

    je constate que tu utilises des quotes lorsque que lorsque tu affectes des valeurs à $pattern ça pourrait poser problème dans le cas où tu voudrais avoir la valeur de la variable affectée. Je prends un exemple pour em faire comprendre.
    Par exemple quand tu fais , la valeur contenue dans $pattern sera $i alors que si tu fais , sa valeure sera 0.

    Si ça peut être utile.........

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Pour trouver des valeurs dans du HTML, ça se fait avec DOMDocument et DOMXPath

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/04/2007, 11h46
  2. utilisation de regex
    Par mhamedbj dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2007, 17h44
  3. utiliser un regex?
    Par Weedo dans le forum Langage
    Réponses: 3
    Dernier message: 10/01/2006, 17h38
  4. Réponses: 9
    Dernier message: 30/11/2005, 18h18
  5. Utilisation de regex : TRegExpr
    Par trakiss dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2005, 23h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo