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 :

La regex marche avec un fichier local, mais pas avec le fichier sur le net [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut La regex marche avec un fichier local, mais pas avec le fichier sur le net
    Bonjour tout le monde!

    Pour un projet d'étude, je dois faire une sorte de parser avec les regex.
    Je possède un fichier en local, et quand je lance mon parser.php sa marche, mais dès qu'il est sur le net, problème...

    Voici le code de mon parser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        <?php  
    $pattern  = '#\<font size="1">\r\n(.*)#';
    preg_match_all($pattern, implode("", file($_POST['url'])), $result, PREG_PATTERN_ORDER);
        print_r($result);  
    echo 'Numéro : #'.$result[1][0].'<br >';
    echo 'Nom  : '.$result[1][1].'<br >';
    echo 'Region : '.$result[1][2].'<br >';
    echo 'Langues : '.$result[1][3].'<br >';
    echo 'Equipe : '.$result[1][4].'<br >';
    echo 'Taille  : '.$result[1][5].'<br >';
    echo 'Nom F : '.$result[1][7].'<br >';
    echo 'Nom V : '.$result[1][6].'<br >';
    
    ?>
    J'envoie l'url grace à un formulaire, en POST

    Sur mon PC, quand je le lance, j'obtiens :
    Numéro : 089
    Nom : Doe
    Region : Picardie
    Langues : FR
    Equipe : FiRe
    Taille : 1m65
    Nom F : MisterX
    Nom V : John
    Alors que si le fichier est sur le net :

    Array ( [0] => Array ( ) [1] => Array ( ) )
    Notice: Undefined offset: 0 in C:\Program Files\EasyPHP 2.0b1\www\parse.php on line 6
    Numéro : #

    Notice: Undefined offset: 1 in C:\Program Files\EasyPHP 2.0b1\www\parse.php on line 7
    Nom :

    Notice: Undefined offset: 2 in C:\Program Files\EasyPHP 2.0b1\www\parse.php on line 8
    Region :

    Notice: Undefined offset: 3 in C:\Program Files\EasyPHP 2.0b1\www\parse.php on line 9
    Langues :

    Notice: Undefined offset: 4 in C:\Program Files\EasyPHP 2.0b1\www\parse.php on line 10
    Equipe :

    Notice: Undefined offset: 5 in C:\Program Files\EasyPHP 2.0b1\www\parse.php on line 11
    Taille :

    Notice: Undefined offset: 7 in C:\Program Files\EasyPHP 2.0b1\www\parse.php on line 12
    Nom F :

    Notice: Undefined offset: 6 in C:\Program Files\EasyPHP 2.0b1\www\parse.php on line 13
    Nom V :
    J'ai pensé à l'encodage, ou alors le fichier est mal lu, mais quand je fait un echo $subjects; sa m'affiche bien la page web, donc pas de problème de ce point de vue... le fichier est le même que sur le PC... Je comprend pas mon erreur, alors je fait appel à vous

    Merci d'avance pour votre aide,
    Mathieu

  2. #2
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    Au début de ton script PHP sur ta machine locale, fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting(E_ALL);
    Tu verra alors apparaître les erreurs de notices même en local !!

    Donc tu as bien un petit trucs à corriger sur ton code, c'est pas méchant (c'est pas des ERROR ni WARNING) mais il faut quand même le corriger pour que ton code soit parfait

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut
    salut et merci pour ta réponse

    J'ai mis

    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
        <?php  
    error_reporting(E_ALL);
    $pattern  = '#\<font size="1">\r\n(.*)#';
    preg_match_all($pattern, implode("", file($_POST['url'])), $result, PREG_PATTERN_ORDER);
        print_r($result);  
    echo 'Numéro : #'.$result[1][0].'<br >';
    echo 'Nom  : '.$result[1][1].'<br >';
    echo 'Region : '.$result[1][2].'<br >';
    echo 'Langues : '.$result[1][3].'<br >';
    echo 'Equipe : '.$result[1][4].'<br >';
    echo 'Taille  : '.$result[1][5].'<br >';
    echo 'Nom F : '.$result[1][7].'<br >';
    echo 'Nom V : '.$result[1][6].'<br >';
     
    ?>
    Mais sa affiche exactement la même chose qu'avant : pas d'erreur en local, et les notices sur le net
    J'ai faux ou? C'est bien là que je devais mettre le error_reporting(E_ALL); ??

    Merci d'avance

  4. #4
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    Ca veut dire que ton preg_match_all ne rapporte rien
    Regarde si ton file(..) fais bien ce que tu souhaites.

    Je pense que tu dois avoir un problème d'accès à ton fichier en ligne tout simplement.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut
    Quand j'affiche mon file, sa m'affiche la page web avec toutes mes infos, donc normalement, sa marche ( dans un autre partie, je récupère et affiche une image, et cette partie la marche )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     $pattern  = '#\<a href="(.*)" title="image a recuperer"><img src=#';
        preg_match($pattern, implode("", file($_POST['url'])), $result);
     
        echo '<img src="'.$result[1].'"><br >';
    l'image s'affiche bien en distant, et en local O.o ( mais je n'ai pas de preg_match_all, mais le fichier est le même que l'autre )
    C'est pour ça que je ne comprend pas l'erreur du dessus...

    Je vais essayer en mettant en ligne le parser sur un autre site, et je vais essayé d'avoir le contenu de ma page on verra bien
    EDIT ==> Ca ne change rien, toujours pareil : l'image s'affiche, et les infos nan

    EDIT2=> J'ai remplacé le file par file_get_content() et ca fait la meme chose...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut
    c'est bon
    J'ai trouvé le problème... Dans mon regex, il suffisait d'enlever le \r et sa marche en distant

    Merci pour ton aide, c'est vraiment un super site !!
    Mathieu

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/03/2015, 10h49
  2. Réponses: 2
    Dernier message: 25/10/2011, 09h49
  3. [PHP 5.0] Fonction mail marche avec hotmail et yahoo mais pas avec gmail
    Par unix27 dans le forum Langage
    Réponses: 3
    Dernier message: 08/11/2010, 12h21
  4. Repérer deux fichiers identiques mais pas avec les mêmes dates
    Par rambc dans le forum Général Python
    Réponses: 14
    Dernier message: 17/03/2009, 03h13
  5. Réponses: 2
    Dernier message: 09/10/2007, 11h31

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