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 :

Extraire une donnée


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Points : 94
    Points
    94
    Par défaut Extraire une donnée
    Bonjour,

    je sais utiliser les regex mais là je sèche.

    voici le contenu de la source
    Code html : 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
    <span class='tableRow' data-number='0' data-type='image/jpeg'>
    	<span class='ca'>
    		<a href="/image.jpg" >
    			<span class="icon rendering"></span>
    			<span class='text' id='file' >
    				image.jpg
    			</span>
    		</a>
    	</span>
    	<span class='cc'>
    		<span class='text'>
    			950 KB
    		</span>
    	</span>
    	<span class='cd'>
    		<span class='text'>
    		<span class="hidden">##45454591557166##</span>
    			1 minute ago
    		</span>
    	</span>
    	<span class='ce'>
    		<span class='text'>Rendering</span>
    	</span>
    	<span class='cf'>
    		<span class="text">
    			0 comments
    			<span class="hidden">##0##</span>
    		</span>
    	</span>
    	<span class='cg'>
    		<span class="icon"></span>
    		<ul class='dropdown'>
    			<li>
    				<a target="_blank" href="/image">
    					Download
    				</a>
    			</li>
    			<li>
    				<a href="#" class="filesTabPopup" data-url="/image" data-id="354545492421" data-header="Version history for" data-filename="image.jpg">
    					View version history
    				</a>
    			</li>
    		</ul>
    	</span>
    </span>

    je veux extraire la taille du fichier donc ici : 950 KB (950 et KB)


    J'ai essayé des preg match all du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /<span class=`\'cc\'>
    	<span class=\'text\'>(.*)<\/span>/iU
    Mais sans succès, j'ai tenté une vingtaine de pattern différents

    Merci de l'aide apporté par un spécialiste

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Les regex n'ont jamais été la bonne solution pour parser du XML ou du HTML, il existe des fonctions spécifiques pour ça : Manipulation XML.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Points : 94
    Points
    94
    Par défaut
    J'utilise déjà DOMDocument avec du xpath.

    Mais ensuite je veux récupérer des datas qui se trouvent soit dans des balises soit dans des attributs.

    Et comme mon parser est générique pour différentes sources, je me retrouve avec ce contenu suite à xpath query

    D'où ma requête sur le regex pour un preg match all car j'ai un nombre variable de ligne (objets)

  4. #4
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Points : 172
    Points
    172
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Les regex n'ont jamais été la bonne solution pour parser du XML ou du HTML, il existe des fonctions spécifiques pour ça : Manipulation XML.
    pourquoi loader tout un document pour un truc si simple ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all("/<span class='cc'>[\s]*<span class='text'>(.*)<\/span>/s",$input_lines, $output_array);
    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
    Array
    (
        [0] => Array
            (
                [0] => <span class='cc'>
    		<span class='text'>
    			950 KB
    		</span>
            )
     
        [1] => Array
            (
                [0] => 
    			950 KB
     
            )
     
    )
    http://www.phpliveregex.com/p/47N

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Anti-hero de Films Comiques
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Anti-hero de Films Comiques

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Malgré les contre-indications de rigueur, une solution pur-regex simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(preg_match("~(?s)<span class='cc'>[\R\s]*<span class='text'>\D*\K\d+\sKB~",$page,$m))
        echo $m[0]; // 950 KB
    Si tu en as plusieurs par page, le meme avec un preg_match_all():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(preg_match_all("~(?s)<span class='cc'>[\R\s]*<span class='text'>\D*\K\d+\sKB~",$page,$m))
        print_r($m[0]); // array avec "950 KB", "225 KB" etc

Discussions similaires

  1. Macro : Extraire une donnée dans un message
    Par roidurif dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/04/2011, 13h15
  2. [MySQL] Extraire une données en fonction de l'id'
    Par flamel dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/03/2009, 17h52
  3. Extraire une donnée d'une cellule
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/12/2008, 21h19
  4. [XPATH][PHP] Extraire une donnée au choix d'un XML
    Par Monky dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/11/2008, 23h25
  5. Extraire une donnée d'un fichier aleatoirement
    Par ranell dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 25/03/2007, 22h33

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