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 :

Récupérer une portion d'une div


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut Récupérer une portion d'une div
    Bonjour à tous,

    Dans le code suivant, j'aimerais récupérer les éléments suivants avec preg_match :

    h1, div.article_metadata, div#article_body

    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
    21
    <div id="article_holder">
    	<h1>title1</h1>
    	<div class="article_metadata">
    		<span class="metadata_time">2011.06.08</span>
    		<div class="article_auth">
    			<img src="http://www.echoroukonline.com/ara/themes/rtl/img/fleche_orange.gif">name
    		</div>
    	</div>
    	<div id="article_body">
    		<p class="abstract"><strong></strong></p>
    		<ul dir="rtl">
    			<li><div></div></li>
    			<li><div></div></li>
    			<li><div></div></li>
    			<li><div></div></li>
    			<li><div></div></li>
    		</ul>
    	</div>
    	<div id="autre"></div>
    	<p class="nbreads"></p>
    </div>
    Comment faire cela ?

    Merci.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pour parser du HTML c'est DOMDocument

  3. #3
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    pour parser du HTML c'est DOMDocument
    J'ai déjà utiliser le dom et xpath, mais j'ai un problème de codage.

    Parce que dans l'affichage du résultat (il est en arabe), j'ai des caractères bizarre.

    تصريØ*ات مثيرة للشغب
    2011.06.08 سالم زواوي
    على الرغم من Ø*ساسية المرØ*لة ÙˆØ*ساسية الأوضاع على كل الجبهات ÙÙŠ الجزائر، وعلى الرغم من ترشØ* هذا الوضع Ù„Ù„Ø§Ù†ÙØ¬Ø§Ø± السياسي والاجتماعي ÙÙŠ أي Ù„Ø*ظة، ÙØ¥Ù† الوزير الأول السيد Ø£Ø*مد أويØ*يى يواصل
    Vois-tu pourquoi j'ai essayé d'avoir un résultat lisible avec preg_match ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ton script est bien en utf-8 ?

  5. #5
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Oui, le fichier est sauvegardé en UTF8 Without BOM.

    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
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    <?php
    header('Content-Type: text/html; charset=UTF-8');
    //<!--meta http-equiv="Content-Type" content="text/html; charset=utf-8" /--> 
    set_time_limit(0);
     
    $sUrl = 'http://www.echoroukonline.com/ara/editorial/index.1.html';
    $sUrlSrc = getWebsiteContent($sUrl,0);
     
    // Load the source
    $dom = new DOMDocument("UTF-8");
    @$dom->loadHTML($sUrlSrc);
     
    $xpath = new DomXPath($dom);
     
    // ===================================      step 1 - links:
     
    $vRes = $xpath->query("/html/body/div/div[2]/div/div[2]/div[4]/div/div/div/h2/a");
     
    // ===================================      step 2 - titles:
     
    $aLinks = $vRes->item(0)->getAttribute("href");
     
    echo "<br />aLinks : ".$aLinks."<br />";
    $sUrl2 = 'http://www.echoroukonline.com/ara/'.$aLinks;
     
    echo "<br />sUrl2 : ".$sUrl2."<br />";
    $sUrlSrc2 = getWebsiteContent($sUrl2,1);
     
    @$dom->loadHTML($sUrlSrc2);
    $xpath = new DomXPath($dom);
     
    // ===================================      step 3 - titles:
     
    $vRes = $xpath->query(".//*[@id='article_holder']/h1");
    $aTitles= $vRes->item(0)->nodeValue;
     
    // ===================================      step 4 - Metas:
     
    $vRes = $xpath->query(".//*[@class='article_metadata']");
    $aMetas= $vRes->item(0)->nodeValue;
     
    //====================================      step 5 - descriptions:
     
    $vRes = $xpath->query(utf8_encode(".//*[@id='article_body']"));
    $aDescriptions= $vRes->item(0)->nodeValue;
     
    //=============================
     
    echo '<link href="css/styles.css" type="text/css" rel="stylesheet"/><div class="main">';
    echo '<h1>Using xpath for dom html</h1>';
     
    //echo "<br />".$aTitles."<br />".$aMetas."<br />".$aDescriptions."<br />";
     
    echo "
    <div class='unit'>
        <a href='{$sUrl2}'>{$aTitles}</a>
        <div>{$aMetas}</div>
        <div>{$aDescriptions}</div>
    </div>";
     
    echo '</div>';
     
    // this function will return page content using caches (we will load original sources not more than once per hour)
    function getWebsiteContent($sUrl,$f=0) {
     
    	// our folder with cache files
        $sCacheFolder = 'cache';
     
        if(!is_dir($sCacheFolder)){
            mkdir($sCacheFolder,0777);
        }
     
        // cache filename
        if ($f == 0) {
            $sFilename = 'ech-'.date('YmdHi').'.html';
        } else {
            $sFilename = 'eftch-'.date('YmdHi').'.html';
        }
     
        if (!file_exists($sCacheFolder."/".$sFilename)) {
            $ch = curl_init($sUrl);
            $fp = fopen($sCacheFolder."/".$sFilename, 'w');
            curl_setopt($ch, CURLOPT_FILE, $fp);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_HTTPHEADER, Array('User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15'));
            curl_close($ch);
            fclose($fp);
        }
        //return file_get_contents($sCacheFolder.$sFilename);
        return file_get_contents_utf8($sCacheFolder."/".$sFilename);
     
     
    }
    function file_get_contents_utf8($fn) {
         $content = file_get_contents($fn);
         return mb_convert_encoding($content, 'UTF-8',
             mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true)
                );
    }
     
    ?>

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ton file_get_contents_utf8 sert a rien le site est déjà en utf-8

Discussions similaires

  1. [SP-2010] récupérer les terme d'une colonne d'une liste dans une autre liste
    Par Noruk dans le forum SharePoint
    Réponses: 2
    Dernier message: 09/02/2015, 19h15
  2. [WD16] Récupérer la valeur d'une colonne d'une table d'une ligne précise
    Par elghers_hocine dans le forum WinDev
    Réponses: 16
    Dernier message: 06/05/2011, 19h11
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  4. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 15h23
  5. 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, 14h48

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