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 :

rechercher une chaîne dans une page source [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de floopi51
    Inscrit en
    Octobre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 136
    Points : 62
    Points
    62
    Par défaut rechercher une chaîne dans une page source
    Bonjour,

    j'essaye de rechercher une chaîne de caractères dans une page de code source avec une expression régulière.

    Un extrait du code source est :
    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
    <SCRIPT LANGUAGE=javascript>
    <!--
    
    
    document.forms.fx.tabdev=new Array("ADF","ADP","AED","AFA","AFN","ALL","AMD","ANG","AOA","AON","ARS","ATS","AUD","AWF","AWG","AZM","AZN","BAM","BBD","BDT","BEF","BGL","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYR","BZD","CAD","CDF","CHF","CLP","CNY","COP","CRC","CUC","CUP","CVE","CYP","CZK","DEM","DJF","DKK","DOP","DZD","ECS","EEK","EGP","ERN","ESP","ETB","EUR","FIM","FJD","FKP","FRF","GBP","GEL","GGP","GHC","GHS","GIP","GMD","GNF","GRD","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","IEP","ILS","IMP","INR","IQD","IRR","ISK","ITL","JEP","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LTL","LUF","LVL","LYD","MAD","MDL","MGA","MGF","MKD","MMK","MNT","MOP","MRO","MTL","MUR","MVR","MWK","MXN","MYR","MZM","MZN","NAD","NGN","NIO","NLG","NOK","NPR","NTD","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PSL","PTE","PYG","QAR","ROL","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDD","SDG","SDP","SEK","SGD","SHP","SIT","SKK","SLL","SOS","SPL","SRD","SRG","STD","SVC","SYP","SZL","THB","TJS","TMM","TND","TOP","TRL","TRY","TTD","TVD","TWD","TZS","UAH","UGX","USD","UYP","UYU","UZS","VAL","VEB","VEF","VND","VUV","WST","XAF","XAG","XAU","XCD","XDR","XEU","XOF","XPD","XPF","XPT","YER","YUN","ZAR","ZMK","ZWD");
    
    document.forms.fx.countopt=document.forms.fx.tabdev.length;
    
    document.forms.fx.nbdec=new Array(2,0,2,0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,0,0,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,2,2,2,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2,2,0,2,2,2,0,0,2,0,2,2,2,2,0,0,2,2,2,2,0,0,2,0,2,2,2,0,2,2,0,0,2,0,2,2,2,0,0,2,2,2,2,0,2,2,2,2,0,0,2,2,0,2,0,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,0,2,2,2,2,2,2,2,0,2,0,2,2,2,0,2,0,0,2,2,0,0,2,2,2,2,2,2,2,2,0,2,2,2,2,0,2,2,2,2,2,2,2,0,2,0,0,2,0,2,2,2,2,2,0,2,0,2,2,2,2,0,2);
    
    document.forms.fx.modec=new Array(0,0,0,0,0,0,0,0,0,0,1,3,2,0,0,0,0,0,0,0,3,0,1,0,0,0,0,0,1,0,0,0,0,0,2,0,2,1,0,0,0,0,0,0,3,1,3,0,1,0,0,0,1,0,0,3,0,4,3,0,0,3,2,0,0,0,0,0,0,0,3,0,0,1,0,0,0,1,1,3,0,0,0,0,0,1,3,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,1,0,0,0,0,0,3,1,0,1,1,0,0,0,0,0,0,1,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0);
    
    document.forms.fx.coursj=new Array(11.971398700,11.971398700,4.793382700,4.918848200,67.220389500,130.815478000,484.397948000,2.314912300,101.535053000,101.431896000,4.815175800,13.760300000,1.830400000,2.334482000,2.334482000,5239.539640000,1.048550900,1.958802000,2.575748000,89.727538300,40.339900000,1.955800000,1.955800000,0.491625900,1584.313780000,1.304178800,1.957810500,9.149852500,2.872700000,1.304178800,65.124910200,9.763223200,3737.861230000,2.568967700,1.610800000,1104.926440000,1.513000000,761.058709000,8.913000000,3041.995440000,747.261776000,1.208283300,34.560736900,111.071522000,0.585274000,26.831000000,1.955830000,231.491228000,7.449400000,46.784883900,95.294284400,31.962954300,15.646600000,7.350622700,21.375531800,166.386000000,14.651830300,1.000000000,5.945730000,2.905969100,0.896231800,6.559570000,0.896800000,2.152686100,0.896503200,18820.435100000,1.882225800,0.896503200,35.017229500,6412.339060000,340.750000000,10.497927800,266.085716000,10.113800000,24.651502200,7.430000000,51.862187400,296.810000000,14257.130000000,0.787564000,5.532143600,0.896503200,65.150949700,1507.537290000,13118.353700000,171.040509000,1936.270000000,0.896503200,116.767163000,0.925003500,128.280000000,102.937180000,53.491058800,5385.340860000,492.715568000,185.848977000,1759.270000000,0.381183400,1.100569800,196.320866000,11169.126200000,1960.905160000,156.534500000,85.520455100,11.644267100,3.452800000,40.339900000,0.709200000,1.692798400,11.134794100,14.681174800,2688.288780000,13437.988600000,61.679783100,8.396459500,1806.951580000,10.415002000,340.516645000,0.429300000,44.420997300,16.699637300,185.914076000,17.242300000,4.727400000,34508.247300000,34.516770200,11.644267100,192.111479000,26.298601300,2.203710000,8.690000000,103.720368000,44.193652400,2.325800000,0.502359200,1.305000000,4.052007900,3.814767900,63.280000000,105.220645000,4.435500000,0.217499000,200.482000000,6564.129360000,4.751238800,42503.718400000,4.243800000,94.383903100,43.937000000,739.932656000,4.886604200,10.423214500,19.419664300,304.324734000,3.043217300,3095.130000000,10.915800000,1.959400000,0.896648400,239.640000000,30.126000000,4105.519060000,1839.981690000,0.217497000,3.582175000,3582.215080000,21271.433800000,11.411514000,60.095078700,11.638358200,46.321000000,5.105536300,18596.194900000,1.855184800,2.843063600,2135000.000000000,2.135000000,8.065527400,1.833491900,44.193652400,1748.693180000,10.570538000,2851.416280000,1.305000000,31.385118800,31.385118800,2851.416280000,1939.212250000,2805.736980000,2.805717000,23202.824200000,146.837788000,3.954530000,656.953757000,3.264042100,0.045375600,3.482163300,0.878357700,1.000000000,656.953757000,0.174642100,119.331000000,0.034385900,261.260395000,268.548403000,11.632800000,7438.475960000,353.705656000
    );
    
    document.forms.fx.today_date="23 April 2009";
    document.forms.fx.previousday_date="";
    document.forms.fx.lang="en";
    ....
    La chaine de caractères que je veux récupérer est en rouge.

    J'ai donc écris ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    "$file = le code source;"
     
    $pattern='^Array(.*);$';
    $devs = ereg($pattern,$file,$regs); 
     
    print('regs='.$regs[1].'<br/>');
    ?>
    Pour moi l'expression régulière que j'ai écrite signifie :
    une chaîne commençant par Array avec n'importe quel caractères au milieu et se terminant par ";".
    Mais celà ne focntionne pas.....
    Pouvez vous me dire où est mon erreur ??

    merci

  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 : 41
    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

    apparemment quand tu mets ^ ça ne fonctionne pas pourquoi ? j'en sais rien.
    par contre, j'ai fait une expression qui fonctionne :

  3. #3
    Membre du Club Avatar de floopi51
    Inscrit en
    Octobre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 136
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Mitaka Voir le message
    salut

    apparemment quand tu mets ^ ça ne fonctionne pas pourquoi ? j'en sais rien.
    par contre, j'ai fait une expression qui fonctionne :
    genial, merci !

    que signifie le m à la fin de l'expression ?

    autre question : cette expression fonctionne avec preg_match mais je n'obtiens rien avec ereg.
    quelle expression faut-il écrire pour ereg ?

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Citation Envoyé par floopi51 Voir le message
    genial, merci !

    que signifie le m à la fin de l'expression ?

    autre question : cette expression fonctionne avec preg_match mais je n'obtiens rien avec ereg.
    quelle expression faut-il écrire pour ereg ?
    - Le m signifie multiligne.

    - Avec ereg il faut supprimer les délimiteurs et le modificateur.

    - Il faut éviter d'utiliser les fonctions ereg* qui sont plus lentes que les fonctions preg*.

    - Le signe ^ en début d'expression signifie que la chaine doit commencer par ce qui suit et le signe $ en fin d'expression signifie que la chaine doit finir par ce qui précède. Donc entourer ton expression de ces deux signes l'empêche de trouver la chaine que tu veux, vu que tu as autre chose avant et après.

    - La solution donnée est caduque, elle ne récupère que le premier résultat trouvé. Ce n'est juste que si tu es sûr et certain que le premier résultat sera toujours le bon tableau. Si le code source change et qu'un autre Array() ets défini juste au-dessus ton script foire.

  5. #5
    Membre du Club Avatar de floopi51
    Inscrit en
    Octobre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 136
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    - Le m signifie multiligne.
    - La solution donnée est caduque, elle ne récupère que le premier résultat trouvé. Ce n'est juste que si tu es sûr et certain que le premier résultat sera toujours le bon tableau. Si le code source change et qu'un autre Array() ets défini juste au-dessus ton script foire.
    merci pour toutes ces infos.
    comment recuperer toutes les expressions qui repondent à ma regex ?
    un preg_match_all ?

  6. #6
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Oui, un preg_match_all.

    Après, il faut savoir ce que tu souhaites réellement rechercher. Si c'est toutes les lignes où un Array est défini en Javascript, si ce sont tous les Array qui ont des valeurs textes, si c'est un Array particulier, etc.

  7. #7
    Membre du Club Avatar de floopi51
    Inscrit en
    Octobre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 136
    Points : 62
    Points
    62
    Par défaut
    je cherche tous les Array en javascript.
    j'ai essayé un preg_match_all avec la regex '/Array\((.*?)\);$/m' qui n'est pas parfaite et je n'obtiens que les 3 premiers Array.

    Je ne comprend pas pourquoi.

  8. #8
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Avec celle-là ça devrait aller mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all( '#Array\(([^)]*)\)#', $content, $matches );

  9. #9
    Membre du Club Avatar de floopi51
    Inscrit en
    Octobre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 136
    Points : 62
    Points
    62
    Par défaut
    merci pour vos réponses.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/04/2008, 14h14
  2. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  3. Trouver la position d'une chaîne dans une chaîne
    Par taka10 dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2007, 23h18
  4. Réponses: 7
    Dernier message: 21/08/2006, 16h27
  5. Réponses: 4
    Dernier message: 11/08/2006, 13h47

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