Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    14

    aiuto con file_get_contents

    ciao a tutti

    qualche giorno fa avevo chiesto come potevo riportare il testo contenuto all'interno di una pagina web esterna, all'interno del mio sito, e in questo mi è stato consigliato di utilizzare file_get_contents. Ora il fatto è che mi riporta l'intera pagina, mentre io vorrei solamente una parte di testo che si trova nella pagina web esterna. Ho provato con preg_match_all inserendo a fianco il testo iniziale da dove voglio che parta e dove voglio che finisca, ma il risultato non cambia, o mi da errore di sintassi, oppure mi carica l'intera pagina che sto richiamando, compreso il titolo della pagina.

    Premetto che mi sto affacciando adesso al php e sto cercando di capirne di più.
    Qualche suggerimento? non chiedo uno script già pronto, mi basta anche sapere cosa devo cercare e studiarmi. Grazie mille

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Va bene come stai facendo ora, ovvero prendere l'intera pagina con file_get_contents() e poi filtrare il contenuto con preg_match() o preg_match_all() se ti aspetti che ci siano più risultati validi.

    Il problema è scrivere bene l'espressione regolare.
    Studiati come funziona la funzione preg_match() e come si usano le espressioni regolari.

  3. #3
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Ti conviene fare una cosa del genere

    Codice PHP:
    $source = <<<EOF
    <div id="primo">
    testo del div con id primo
    </div>

    <div id="secondo">
    testo del div con id secondo
    </div>

    <div id="terzo">
    testo del div con id terzo
    </div>
    EOF;

    $dom = new DOMDocument();
    $dom->loadHtml($source); // $source lo puoi continuare a prendere con file_get_contents o curl o altri metodi
    echo $dom->getElementById('secondo')->nodeValue;
    echo 
    '
    '
    ;
    echo 
    $dom->getElementsByTagName('div')->item(1)->nodeValue
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Bisogna vedere come è organizzato il codice, potrebbe non essere così semplice.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    14
    Originariamente inviato da Alhazred
    Bisogna vedere come è organizzato il codice, potrebbe non essere così semplice.
    infatti, o perlomeno io non ci capisco molto, ma credo di aver capito appunto che non è così semplice... posto l'inizio del codice da dove dovrei iniziare a "prelevare" il testo

    Codice PHP:
    </div> <div id="maincolumn"> <div class="m1"> <div class="m2"> <div class="m3"> <div class="nopad"> <table class="contentpaneopen"> <tr> <td valign="top"

     </
    p> <p style="text-align: center"><span style="font-size: small"><bdo dir="ltr"> [b]<span style="color: rgb(255,0,0)">LE OFFERTE DI LAVORO SONO SEMPRE AGGIORNATE DAGLI OPERATORI</span>[/b]</bdo></span></p> <p style="text-align: center;"> </p> <p align="LEFT" style="widows: 0; orphans: 0"><font color="#000000"><span style="text-decoration: none"><font face="Arial, sans-serif"><font size="2" style="font-size: 11pt"><span lang="it-IT"> </span></font></font></span></font></p> <p style="text-align: left;">[b]Rif IG 072 [/b]Famiglia privata 

    Questo è quello che ho davanti, in pratica io devo prendere a partire da
    Rif IG 072 [/b]Famiglia privata[/PHP]

    Ho provato vari metodi, ma sicuramente sbaglio qualcosa, perchè quando poi carico la pagina in locale mi da pagina bianca con scritto Array, oppure mi dice sythax error on line... oppure un altro errore che non ricordo al momento
    Ora provo a combinare qualcosa con il codice che è stato postato poco sopra, anche se credo che sia troppo complicato anche solo da capire al momento per me, ma ci provo ugualmente. Nel frattempo accetto volentieri altri consigli. Grazie a tutti per la disponibilità!

  6. #6
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Credo che un parser html sia la soluzione migliore per parsare dell'html

    Scherzi a parte, prova questo

    Codice PHP:
    $source = <<<EOF

    <div id="maincolumn"> 
        <div class="m1"> 
            <div class="m2"> 
                <div class="m3"> 
                    <div class="nopad"> 
                        <table class="contentpaneopen"> 
                            <tr> 
                                <td valign="top"> 
                                

    </p>

                                <p style="text-align: center">
                                     <span style="font-size: small">
                                         <bdo dir="ltr">[b]<span style="color: rgb(255,0,0)">LE OFFERTE DI LAVORO SONO SEMPRE AGGIORNATE DAGLI OPERATORI</span>[/b]</bdo>
                                     </span>
                                 </p>
                             <p style="text-align: center;"> </p> 
                             <p align="LEFT" style="widows: 0; orphans: 0">
                                 <font color="#000000">
                                     <span style="text-decoration: none">
                                         <font face="Arial, sans-serif">
                                             <font size="2" style="font-size: 11pt">
                                                 <span lang="it-IT">
                                                 </span>
                                             </font>
                                         </font>
                                     </span>
                                 </font>
                             </p>
                              <p style="text-align: left;">[b]Rif IG 072 [/b]Famiglia privata

    EOF;

    $dom = new DOMDocument();
    $dom->loadHtml($source);

    foreach (
    $dom->getElementsByTagName('table') as $table)
    {
        if (
    $table->getAttribute('class') === 'contentpaneopen')
        {
            if (
    $text $table->getElementsByTagName('p')->item(4))
            {
                echo 
    'testo estratto => ' $text->nodeValue;
            }
        }

    Questo va bene per il caso specifico, ma se hai bisogno di maggiore accuratezza puoi provvedere a selezionare dei tag più precisi... leggi la documentazione di DomDocument sul sito di php.
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    14
    Parse error: syntax error, unexpected T_SL in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\index.php on line 16

    in pratica subito dalla prima riga di codice anche dreamweaver mi da errore

    L'unica csa ce sono riuscito a far è questa

    Codice PHP:
    $page file_get_contents("http://www.giovaniversilia.it/joomla/index.php?option=com_content&view=article&id=66"); if (preg_match("/\bRif\b/i"$page)) { echo "Trovato."; } else { echo "Non trovato."; } ?> 
    e almeno questo funziona... ora da qui come faccio "suppongo sempre con echo" a fargli tirare fuori quello che lui trova?

  8. #8
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Codice PHP:
    $source file_get_contents('http://www.giovaniversilia.it/joomla/index.php?option=com_content&view=article&id=66');

    $dom = new DOMDocument();
    @
    $dom->loadHtml($source);

    foreach (
    $dom->getElementsByTagName('table') as $table)
    {
        if (
    $table->getAttribute('class') === 'contentpaneopen')
        {
            if (
    $text $table->getElementsByTagName('p')->item(4))
            {
                           
    $RISULTATO text->nodeValue;
                echo 
    'testo estratto => ' $RISULTATO;
            }
        }

    A me da come risultato

    codice:
    testo estratto => Rif IG 072 Famiglia privata di Viareggio cerca baby sitter madrelingua inglese o con ottima conoscenza della lingua inglese, età 22-45 anni, con esperienza, da subito, orario da concordare. Per candidarsi chiamare (l'ho censurato, non mi sembra il caso di mettere numeri di telefonino :D)
    P.S: per quanto riguarda il tuo errore dovresti postare il codice che ti dà errore appunto... o come disse qualcuno qui sul forum (non ricordo il nick) "gira il monitor verso la finestra che provo a darvi un'occhiata"
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    14
    a me adesso da errore a questa riga

    $RISULTATO = text->nodeValue;


    Parse error: syntax error, unexpected T_OBJECT_OPERATOR in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\index.php on line 24

  10. #10
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Ho dimenticato il $ davanti a text, scusami... $RISULTATO = $text->nodeValue;
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.