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 :

file_get_contents et regex


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut file_get_contents et regex
    j'ai un fournisseur qui me demande de recuperer les infos produit directement sur leur site avec file_get_contents
    $fich ='http://www.espacepc.com/wdbox/aspglobal/wdb_lb.asp?Args=DATA:espacePC$TABLE:Listearticles$DOSSIER:espacePC$WHERE:%28chronoA=5300%29$HTMR:fiche';
    $thefile = file_get_contents($fich);
    preg_match_all('#(.*)Caractéristiques(.*)#', $thefile, $out);
    print_r($out);
    je voudrais recuperer sur un fichier excel le contenu de la rubrique
    Caractéristiques mais j'ai çà comme résultat
    Array
    (
    [0] => Array
    (
    [0] => Caractéristiques
    )

    [1] => Array
    (
    [0] =>
    )

    [2] => Array
    (
    [0] =>
    )

    )
    je ne comprends riens là.
    merci pour votre precieuse aide

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Salut,

    Tu ne nous donnes pas beaucoup de données pour réfléchir...

    Dans un premier temps, je tenterais le DOT_MATCH_ALL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('#(.*)Caractéristiques(.*)#s', $thefile, $out);

  3. #3
    Membre expérimenté Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Par défaut
    moi j'ai compris qu'il voulais faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fich ='http://www.espacepc.com/wdbox/aspglobal/wdb_lb.asp?Args=DATA:espacePC$TABLE:Listearticles$DOSSIER:espacePC$WHERE:%28chronoA=5300%29$HTMR:fiche';
    $thefile = file_get_contents($fich);
    preg_match_all('#Caractéristiques</td>(.*)</table>#Uis', $thefile, $out);
    print_r(trim(strip_tags($out[1][0],'<br>')));

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    Citation Envoyé par John Blobsmith Voir le message
    moi j'ai compris qu'il voulais faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fich ='http://www.espacepc.com/wdbox/aspglobal/wdb_lb.asp?Args=DATA:espacePC$TABLE:Listearticles$DOSSIER:espacePC$WHERE:%28chronoA=5300%29$HTMR:fiche';
    $thefile = file_get_contents($fich);
    preg_match_all('#Caractéristiques</td>(.*)</table>#Uis', $thefile, $out);
    print_r(trim(strip_tags($out[1][0],'<br>')));
    super c'est ca :
    par contre j'ai pas compris pourquoi il faut ajouter ca .est ce obligatoire ?
    Uis
    et pourquoi cà car je ne trouve pas dans le code source de la page
    </table>
    le code source est plutot
    <td colspan="4" class="txttitre p05 GC">Caractéristiques</td>
    </tr>
    <tr>
    <td colspan="4" class="txt p05">Station d’accueil USB v2.0/eSATA pour disque dur SATA 3½’’/2½’’<br>

    Bouton de sauvegarde OTB sous Windows avec utilitaire<br>
    Alimenté par adaptateur secteur externe. Interrupteur marche/arrêt<br>
    Indicateurs lumineux pour l’état de marche et l’activité<br>
    Ejection et insertion facile du disque dur<br>
    Windows 2000/XP/VISTA et MAC OS 10</td>
    </tr>
    et pourquoi un trim dans print_r(trim(strip_tags($out[1][0],'<br>')));

  5. #5
    Membre expérimenté Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Par défaut
    c'est des options pour le regex, dans ce cas U ne serai pas obligatoire. Moi je les met toujours comme ca y'a pas de surprise. Leur effet a été détaillé 3 posts plus loin sur ce forum.
    http://www.developpez.net/forums/d89...struire-regex/

    entre "Caractéristiques" et le texte y'a plein de balise mais pas de </table> du coup je l'utilise en fin de regex pour lui dire -> arrête toi ici.

    je vire toutes les balises inutiles genre "<tr>" et "<td>" qui ne me servent plus mais je conserve les "br" pour la mise en forme.

    j'enlève les espèce en début et en fin de texte, ca doit être utile pour mettre le texte dans un fichier excel mais si c'est pour le ré-afficher sur une page web y'a peut-être pas besoin.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    merci john
    en fait j'aimerais recuperer 3 bloc dans la page
    le 1er
    </tbody></table></td>
    </tr>
    <tr>
    <td valign="top"><table class="w100per">
    <tbody><tr>
    <td colspan="4" class="prodtitre2 p10">STATION HDD SATA CONNECTEURS USB+eSATA<br>
    <span class="prod2">Réf. 6001001 DOCK-CNL-SCBT

    <br>
    Code barres : 3700284609377
    le deuxieme bloc est celui de la rubrique par Présentation
    <tr>
    <td colspan="4" class="txttitre p05 GC">Présentation</td>
    </tr>
    <tr>
    <td colspan="4" class="txt p05">Insérez un disque dur SATA 3.5’’ ou 2.5’’ puis connectez-le au port eSATA ou USB<br>
    de votre ordinateur pour sauvegarder vos données.<br>
    Cette station dispose d'un levier pour enlever facilement le disque dur.<br>
    Elle incorpore la fonction et un bouton de sauvegarde OTB pour effectuer des<br>

    sauvegardes régulières sous WINDOWS et uniquement en mode USB.<br>
    Elle est alimentée par une alimentation externe.</td>
    </tr>



    <tr>
    <td colspan="4" class="p05"></td>
    </tr>

    <tr>
    et le dernier bloc est celui de la rubrique Caractéristiques
    (ce dernier , ton code permet de recuperer sans souci )
    j'aimerais recuperer les 2 premiers en m'inspirant de ta méthode
    pour le premier bloc
    j'ai fait ca mais ca ne marche pas non plus
    preg_match_all('#<tbody><tr><td colspan="4" class="prodtitre2 p10">[^</span></td>]*</span></td>#Us', $thefile, $out);
    pour le bloc presentation j'ai essayé 2 methode mais aucun ne marche
    preg_match_all('#Présentation</td>(.*)</table>#Us', $thefile, $out);
    preg_match_all('#Présentation[^</td>]*</td>#Us', $thefile, $out);
    c'est quoi encore le souci .je me prends la tete mais pas vraiment d'idée là.

Discussions similaires

  1. [Regex] Plusieurs motifs
    Par sissi_l dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 29/06/2004, 14h15
  2. [jakarta][regex]Matcher mot en entier.
    Par thibaut dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/05/2004, 13h33
  3. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22
  4. [regex][string] replaceAll bogué ?
    Par 7eme dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 13/11/2003, 16h36
  5. Cherche regex...
    Par laurent_h dans le forum C
    Réponses: 4
    Dernier message: 31/03/2003, 11h24

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