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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Parser un fichier XML en PHP [Fait]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Points : 19
    Points
    19
    Par défaut Parser un fichier XML en PHP
    Bonjour, j'ai parcouru pas mal de forums, sites et je suis toujours tombé sur une solution miracle pour afficher le contenu d'un fichier xml en php ... manque de bol ou de talent (de chance surtout ..) ca ne marche jammais ...

    Voila mon fichier à lire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://fr.xml.clickintext.net/?v=1.0&ip=IP_DU_VISITEUR&a=790&is=1102&q=clickintext_default
    SI vous voulez lire directement ce fichier il suffit d'indiquer une ip bidon pour le tester du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://fr.xml.clickintext.net/?v=1.0&ip=16.196.148.14&a=790&is=1102&q=clickintext_default
    Et je pense que si je veut introduire l'ip du visiteur je doit mettre dans le code ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER["REMOTE_ADDR"]
    je n'ai qu'assigner cette variable a la variable $ipVisiteur

    Et pour les mots clefs (c'est pour une regie pub) je n'ai qu'a mettre une variable qui alloue aléatoirement une valeur au mot clef selon une liste de mots ( de base = q=clickintext_default )


    En principe ca marche, j'ai essayé aussi magpierss, rien a faire, aussi la fonction officielle de php5 .. non plus ... une véritable débacle.

    Est ce que quelq'un peut me sortir de ce bourbier je devient cinglé ....

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Qu'est-ce qui ne marche pas exactement ??

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    ben tout, soit ca me déforme la page, soit ca m'affiche un parse error a un numéro de ligne de code qui est ... vide

    Et dans tout les cas cela ne m'affiche en aucun cas le contenu du fichier xml ..

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Lorsque j'accède à ta page par le lien que tu donnes, je n'ai aucune erreur et le XML est affiché, alors si c'est pas exactement ça que tu recherches sois plus précis.

    "déformer la page", je comprends pas.

    Si tu as un parse error, poste-le avec un fragment de code. Mais d'abord, checke les lignes précédentes pour rechercher les point-virgules manquants, les parenthèses et accolades fermantes oubliées et autres inattentions de ce genre.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    En faites je pense qu'il veut récupérer les liens et mettre en page.

    Voilà ce que j'ai fait, peu de commentaires mais ça fonctionne.

    Voici la source, pas tres propre, il doit surement avoir un meilleur moyen:

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
     
    <table width="650" border="0" align="center" cellspacing="0">
    <tr>
    <td>
     
    <?php
    //-----------------------------
    //Liste de mots clés à rechercher
    //-----------------------------
    $liste = "casinos,voyage,credit";
     
    //-----------------------------
    //On partage les mots
    //-----------------------------
    $mots = explode(",", $liste);
     
    //-----------------------------
    //On compte le nombre de mots
    //-----------------------------
    $nombre = count($mots)-1;
     
    //-----------------------------
    //On sort un nombre au hasard
    //-----------------------------
    $rand = mt_rand(0, $nombre);
     
    //-----------------------------
    //On récupere l'ip du visiteur
    //-----------------------------
    $ip = $_SERVER['REMOTE_ADDR'];
     
    //-----------------------------
    //On initialise la page
    //-----------------------------
    $page = '';
     
    //-----------------------------
    //Url Clickintext
    //-----------------------------
    $url = "http://fr.xml.clickintext.net/?v=1.0&ip=$ip&a=790&is=1102&q=$mots[$rand]";
     
    //-----------------------------
    //Url d'une image vide
    //-----------------------------
    $no_image = "http://img.kelkoo.com/shopbot/19101/small/70/93/78/70937864.jpg";
     
    //-----------------------------
    //Lecture de l'url
    //-----------------------------
    $fp = fopen($url,"r"); 
     
    while (!feof($fp)) 
    {
     
    	$page .= fgets($fp, 4096);
     
    }
     
    	function Return_Substrings($text, $sopener, $scloser)
    	{
    		$noresult = substr_count($text, $sopener);
    		$ncresult = substr_count($text, $scloser);
     
    		if ($noresult < $ncresult)
    		{
    		    $nresult = $noresult;
    		}
    		else
    		{
    		    $nresult = $ncresult;
    		}
     
    		unset($noresult);
    		unset($ncresult);
     
    		$t = 0;
     
    		for ($i=0;$i<$nresult;$i++)
    		{
    	       $pos = strpos($text, $sopener) + strlen($sopener);
     
    	       $text = substr($text, $pos, strlen($text));
     
    	       $pos = strpos($text, $scloser);
     
    	       $result[] = substr($text, 0, $pos);
     
    	       $text = substr($text, $pos + strlen($scloser), strlen($text));
     
    		}
    		return $result;
     
    	}
     
    	$mot = ucwords( $mots[$rand] );
    	$mot = str_replace('+', ' ', $mot);
     
    	$result = Return_Substrings($page, "<url>", "</url>");
       	$url1 = $result[0];
       	$url2 = $result[1];
       	$url3 = $result[2];
       	$url4 = $result[3];
       	$url5 = $result[4];
     
       	$result = Return_Substrings($page, "<title>", "</title>");
       	$title1 = $result[0];
       	$title2 = $result[1];
       	$title3 = $result[2];
       	$title4 = $result[3];
    	$title5 = $result[4];
     
    	$result = Return_Substrings($page, "<description>", "</description>");
    	$desc1 = $result[0];
    	$desc2 = $result[1];
    	$desc3 = $result[2];
    	$desc4 = $result[3];
    	$desc5 = $result[4];
     
    	$result = Return_Substrings($page, "<image>", "</image>");
    	$img1 = $result[0];
    	if(empty($img1))
    	{
    		$img1 = $no_image;
    	}
       	$img2 = $result[1];
    	if(empty($img2))
    	{
    		$img2 = $no_image;
    	}
       	$img3 = $result[2];
    	if(empty($img3))
    	{
    		$img3 = $no_image;
    	}
       	$img4 = $result[3];
    	if(empty($img4))
    	{
    		$img4 = $no_image;
    	}
       	$img5 = $result[4];
    	if(empty($img5))
    	{
    		$img5 = $no_image;
    	}
     
    	echo '<p align="center"><b>Resultats de la recherche pour ' . $mot . '</b></p><br />';
    	echo '<center><table align="center" width="468" border="1" cellpadding="5" cellspacing="0" bordercolor="#FFCC33">';
    	echo '<tr><td><p align="justify"><a href="' . $url1 . '" target="_blank"><img src="' . $img1 . 'align="left" hspace="5" vspace="5" border="0"><font face="verdana" size="1">' . $title1 . '<br />' . $desc1 . '</font></a><br /><br /></p></td></tr>';
     
    	if(!empty($url2))
    	{
    		echo '<tr><td><p align="justify"><a href="' . $url2 . '" target="_blank"><img src="' . $img2 . 'align="left" hspace="5" vspace="5" border="0"><font face="verdana" size="1">' . $title2 . '<br />' . $desc2 . '</font></a><br /><br /></p></td></tr>';
    	}
    	if(!empty($url3))
    	{
    		echo '<tr><td><p align="justify"><a href="' . $url3 . '" target="_blank"><img src="' . $img3 . 'align="left" hspace="5" vspace="5" border="0"><font face="verdana" size="1">' . $title3 . '<br />' . $desc3 . '</font></a><br /><br /></p></td></tr>';
    	}
    	if(!empty($url4))
    	{
    		echo '<tr><td><p align="justify"><a href="' . $url4 . '" target="_blank"><img src="' . $img4 . 'align="left" hspace="5" vspace="5" border="0"><font face="verdana" size="1">' . $title4 . '<br />' . $desc4 . '</font></a><br /><br /></p></td></tr>';
    	}
    	if(!empty($url5))
    	{
    		echo '<tr><td><p align="justify"><a href="' . $url5 . '" target="_blank"><img src="' . $img5 . 'align="left" hspace="5" vspace="5" border="0"><font face="verdana" size="1">' . $title5 . '<br />' . $desc5 . '</font></a><br /><br /></p></td></tr>';
    	}
     
       echo '</table></center>';
     
    fclose($fp);
     
    ?>
     
    </td>
    </tr>
    </table>
    J'espere t'avoir aidé. Les images de clickintext ne sont pas vraiment à jour donc j'ai ajouté une image, si une image est non dispo.

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup ! je teste ca de suite

    edit : c'est pas possible de fixer le nombre maxi d'annonces ? et de faire pour que les annonces se chargent une fois que toute la page est chargée ?

    edit 2 : et si je veut supprimer les images ca marche encore ? (juste de la pub textuelle)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Pour les images, il suffit de supprimer:

    la variable no_image:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //-----------------------------
    //Url d'une image vide
    //-----------------------------
    $no_image = "http://img.kelkoo.com/shopbot/19101/small/70/93/78/70937864.jpg";
    Puis ce passage:
    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
     
    	$result = Return_Substrings($page, "<image>", "</image>");
    	$img1 = $result[0];
    	if(empty($img1))
    	{
    		$img1 = $no_image;
    	}
       	$img2 = $result[1];
    	if(empty($img2))
    	{
    		$img2 = $no_image;
    	}
       	$img3 = $result[2];
    	if(empty($img3))
    	{
    		$img3 = $no_image;
    	}
       	$img4 = $result[3];
    	if(empty($img4))
    	{
    		$img4 = $no_image;
    	}
       	$img5 = $result[4];
    	if(empty($img5))
    	{
    		$img5 = $no_image;
    	}
    Et enfin tous les img:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="' . $img1 . 'align="left" hspace="5" vspace="5" border="0">
    Par contre, ce n'est pas possible de fixer un nombre d'annonces car selon le mot clé, il y a le nombre d'annonces qui varie.

    Imaginons que nous fixions 4 annonces alors qu'il n'ya que 2 resultats.

    Par contre il est possible de fixer un nombre maximal d'anonces en reduisant le nombre de resultats.

    et de faire pour que les annonces se chargent une fois que toute la page est chargée ?
    Désolé je ne sais pas et je ne pense pas que ça soit du domaine du php, mais peut etre JS (à voir...).

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Merci pour tes réponses claires et précises,
    Je pense associer tout ca à une feuille de style CSS pour le rendre plus "zouli"
    Aurait tu un dernier conseil à me donner pour optimiser le code que tu as fourni ? (est'il valide xHTML ?)

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    De rien.

    Le code html qui en ressort n'est pas valid xhtml. Il y a quelques erreurs faciles à corriger, à toi de voir.

    Ca serait bien d'avoir l'url où tu vas incrementer ce code, afin de voir le résultat.

    Pas de conseils à part que tu pourrais coupler les flux xml de clickintext à ceux de deepindex afin d'avoir plus de resultats et une remuneration plus forte.

    Et si tu possedes un site à fort traffic, essaye de voir directement avec les sociétés de liens sponsorisés tels que miva ou yahoo et ainsi augmenter tes CPC, en retirant un intermédiaire.

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    OK, pas de problémes.

    Les pubs sont affichées sur toutes les pages de mon "www" =

    http://Rentabiliser.info

    mais je ne les affiche pas tout de suite, je les teste sur un serveur en interne jusqu'a ce que je trouve la meilleure facon de les afficher.

  11. #11
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ou si ca peut t'aider voici un "vrai" parser XML : Parseur XML ou ici Parser XML

  12. #12
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Oui, merci mais quitte a passer pour un con, je ne comprend strictement rien au code qui est affiché dans ces pages ... (bon si un peu mais bon ...) j'ai pas trouvé le manuel ^^

  13. #13
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Tu as une sorte de manuel dans la signature d'Eusebius : Gestion du XML en PHP 5 : utiliser DOM

  14. #14
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Ok, merci

    Je regarderait tout ca plus tard ( ==> c'est la rentrée .... )

Discussions similaires

  1. [SimpleXML] [PHP] Parser un fichier XML RSS
    Par kramlech dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/03/2013, 18h05
  2. [XML] parser un fichier xml avec php pour refaire un xml.
    Par steve3000 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/10/2008, 11h22
  3. [XML] [EXPAT] Parser un fichier xml avec php
    Par Dargos dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 05/04/2006, 13h25
  4. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/02/2005, 18h12
  5. parser des fichier .xml en perl
    Par djibril dans le forum Modules
    Réponses: 13
    Dernier message: 18/05/2004, 18h08

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