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 :

[PHP 5.0]Probleme avec preg_match_all


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [PHP 5.0]Probleme avec preg_match_all
    Bonjour à tous !
    C'est mon 1er message sur ce forum ! Je le consulte souvent mais je n'y ai jamais rien posté

    J'ai un problème sur un script PHP que j'ai bricolé et qui ne fonctionne pas.
    Ce script doit extraire une chaine d'une page web : http://fr.finance.yahoo.com/q?s=%5Efchi
    Cette chaine est intercalée entre 2 autres chaines dans le code src html :

    Chaine de début : <span id="yfs_l10_^fchi">
    Chaine de fin : </span>

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?
    echo "CAC40\n";
    $ysubject = file_get_contents("http://fr.finance.yahoo.com/q?s=%5Efchi");
    $ypattern = "/<span id=\"yfs_l10_^fchi\">(.*)<\/span>/U";
    preg_match_all($ypattern , $ysubject, $ymatches, PREG_SET_ORDER);
    echo $ymatches[0];
    ?>
    Le script renvoi la 1ere ligne "CAC40" (sans guillemets).
    J'ai apparement un problème sur le masque $ypattern et/ou la dernière ligne mais je ne sais pas où.

    Merci d'avance de vos avis éclairés, je suis dans le flou.

  2. #2
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    salut
    félicitations pour ton premier post ! ça te fait quel effet ? :p

    ce doit être à cause de ton "^" que cela ne fonctionne pas, t'as essayé en mettant \ devant ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci Mitaka pour ta réponse !
    Je suis très honoré d'avoir pu posté ici mon premier post.

    Au fait par rapport au probleme je viens de rechecher la chaine avec IE6 et je l'ai trouvé mais si ca change d'un browser à l'autre je comprend rien. Quel chaine dois je mettre dans le script ?

  4. #4
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    C'est la valeur de référence que tu veux ?

    essaye avec cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ypattern = "/<span id=\"yfs_l10_\^fchi\"( class=\"\")?>(.*?)<\/span>/U";
    ( class=\"\")? : le point d'interrogation c'est quand tu peux trouver l'expression 0 ou une fois.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je vais tenté avec le \ devant le chapeau ^
    La je suis (physiquement) au taff et l'upload est interdit, je tenterai ce soir.

    Merci beaucoup en tout cas, je pensais vraiment que mon post resterai sans reponse (ca interesse generalement pas bcp de gens le preg_match)

  6. #6
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    j'arrête pas de bosser sur des expressions régulières donc je commence à connaître.

    t'as pas un serveur local pour pouvoir tester ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Non j'ai rien au taff c'est deja difficile d'installer un freeware sans que la sécurité informatique t'appele, 75% d'internet est bloqué, alors un serveur local !

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut Mitaka !

    J'ai essayé hier soir mais malheureusement ca ne fonctionne toujours pas. J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ypattern = "/<span id=\"yfs_l10_\^fchi\"( class=\"\")?>(.*?)<\/span>/U";
     
    $ypattern = "/<span id=\"yfs_l10_\^fchi\">(.*)<\/span>/U";
     
    $ypattern = "/<span id=\"yfs_l10_\^fchi\">(.*?)<\/span>/U";
    et aussi de passer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all($ypattern , $ysubject, $ymatches, PREG_SET_ORDER);
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match($ypattern , $ysubject, $ymatches);
    Mais rien n'a fonctionné on obtiens toujours le même résultat.

  9. #9
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    je comprend pas vraiment ce qu'il se passe
    mais ça marche avec cette expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ypattern = "/<td class=\"yfnc_tabledata1\"><big><b>(.*?)<\/b><\/big><\/td>/";

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci Mitaka !! Ca marche nikel !!!
    J'ai un peu bidouillé pour permettre de supprimer les balises en trop et conserver uniquement la valeur.

    Mitaka : You're a living god !

    Voici le code complet juste pour le plaisir d'extraire le CAC40 et le DOWJ de Yahoo-Finance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CAC40:&nbsp;
    <?php $ysubject = file_get_contents("http://fr.finance.yahoo.com/q?s=%5Efchi");
    $ypattern = "/<td class=\"yfnc_tabledata1\"><big><b>(.*?)<\/b><\/big><\/td>/";
    preg_match($ypattern , $ysubject, $ymatches);
    $cacquote = str_replace('<td class="yfnc_tabledata1"><big><b>',"",$ymatches[0]);
    $cacquote = str_replace('</b></big></td>',"",$cacquote);
    echo $cacquote;?>
    &nbsp;-&nbsp;DOWJ:&nbsp;
    <?php $ysubject = file_get_contents("http://fr.finance.yahoo.com/q?s=^DJI");
    $ypattern = "/<td class=\"yfnc_tabledata1\"><big><b>(.*?)<\/b><\/big><\/td>/";
    preg_match($ypattern , $ysubject, $ymatches);
    $cacquote = str_replace('<td class="yfnc_tabledata1"><big><b>',"",$ymatches[0]);
    $cacquote = str_replace('</b></big></td>',"",$cacquote);
    echo $cacquote;?>
    En fait pour extraire n'importe quel valeur il y a juste à changer l'adresse web. Ca pourrait faire un bon script à proposer je suis sur que ca intéresse des gens.

    Merci beaucoup & à bientôt !

  11. #11
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    $ymatches[1] te permet de récupérer la valeur sans passer par un str_replace.
    n'oublie pas de cliquer sur "Résolu"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 24/08/2006, 18h12
  2. Probleme avec un script javascript->php
    Par leluis dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/03/2006, 15h32
  3. probleme avec la PORTE DE VIE D'UNE VARIABLE EN PHP
    Par stomerfull dans le forum Langage
    Réponses: 1
    Dernier message: 09/12/2005, 14h19
  4. probleme avec la PORTE DE VIE D'UNE VARIABLE EN PHP
    Par stomerfull dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2005, 14h17
  5. [SGBD] Probleme Avec Php et Mysql
    Par junior258 dans le forum Installation
    Réponses: 2
    Dernier message: 20/09/2005, 10h39

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