Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [PHP] - Prendere parti di testo da un altra pagina html/asp/php

    Ciao a tutti,
    ho provato a cercare sul forum se c'era un argomento simile al mio già trattato ma ne ho trovato solo 1 e non c'erano le risposte che cercavo.
    Avrei intenzione di creare uno script che passandogli un url mi prenda delle informazioni e me le salvi in una variabile in modo che posso poi gestirmele io.
    Siccome non sò praticamente dove mettere le mani perchè questa cosa non l'ho mai fatta chiedo a voi un aiutino!
    Se mi potete consigliare qualche funzione che faccia una richiesta del codice html e una ricerca su di esso per trovare le stringhe che mi interessano c'è ?
    Siccome hosto il mio sito su altervista, spero non ci siano problemi di incompatibilità perchè spesso molte funzioni lì non vanno per via delle limitazioni...
    Spero che qualcuno mi sappia aiutare!
    Grazie, saluti.
    W magica ROMA!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    121
    prova questo codice:

    $puntatore = fopen("http://www.sito.com/pagina.asp?querystring", "rb");

    if($puntatore)
    {
    $contenuto="";
    while (!feof($puntatore)) {
    $contenuto.= fread($contenuto, 8192);
    }

    apre la pagina con la funzione fopen, con la funzione fread legge una linea alla volta il codice e lo inserisce nella variabile $contenuto.
    Per modificare il codice della pagina letta ti basta modificare il contenuto di $contenuto

  3. #3
    Ciao,
    grazie per la risposta, ho provato il codice da te postato sia in locale sia nell'host solo che mi dà un problema:

    Parse error: syntax error, unexpected $end on line 10

    Inoltre quando la variabile $contenuto contiene tutta la pagina, come faccio a individuare quello che mi serve?
    Per vedere se funziona intanto posso fare un echo $contenuto?
    Ho provato a farlo ma comuqnue mi dà quell'errore che ti ho detto prima....
    Grazie e scusa per le tante domande
    ciao
    W magica ROMA!

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    121
    si il codice l'ho scritto di fretta e manca una parentesi di chiusura

    $puntatore = fopen("http://www.sito.com/pagina.asp?querystring", "rb");

    if($puntatore)
    {
    $contenuto="";
    while (!feof($puntatore)) {
    $contenuto.= fread($contenuto, 8192);
    }
    }

    puoi modificare il contenuto usando le funzioni eregi_replace oppure str_replace su $contenuto prima di stamparla

  5. #5
    Ma sei sicuro sia giusto?
    Ad occhio da quel che ci capisco quel ciclo non fà nulla :|

    $puntatore = fopen("http://www.sito.com/pagina.asp?querystring", "rb");

    if($puntatore)
    {
    $contenuto="";
    while (!feof($puntatore)) {
    $contenuto.= fread($contenuto, 8192);
    }
    }

    Non dovrebbe essere:
    fread($puntatore, 8192); ??

    Comunque, ho provato sia così che come dici tu e non funziona
    In locale mi dà questo errore:

    Warning: fread(): supplied argument is not a valid File-Handle resource in c:\sitointernet\test.php on line 9

    Me lo stampa un'infinità di volte ...
    Mentre sull'host non mi dà nessun errore, ma provando a stampare la variabile $contenuto non succede nulla
    W magica ROMA!

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    121
    si effettivamente ho scritto un po' di ca...ate, però più o meno il concetto era quello, ecco il codice corretto e provato:

    $puntatore = fopen("http://sito.it/index.php", "rb");

    if($puntatore){
    $contenuto="";
    while (!feof($puntatore)) {
    $contenuto .= fread($puntatore, 8192);
    }
    print "$contenuto";
    }

  7. #7
    Perfetto ora sembra funzionare
    Ti ringrazio tantissimo per la pazienza
    Ora stavo provando a vedermi le funzioni che mi avevi indicato per la ricerca della parte che mi serve all'interno della pagina, siccome forse è + semplice spiegarti cosa realmente mi serve ti spiego, vorrei prendere ad esempio da questo sito:

    http://www.borsaitalia.it/bitApp/sch...801721&lang=it

    il valore Var %: +1,28

    Presuppongo quindi di dove ricercare all'interno di $contenuto
    <td>Var %:</td>
    Solamente che non poi non sò come fare per prendere il valore dopo ossia il numero che mi interessa!
    Spero di essermi spiegato!
    Grazie mille ancora per l'aiuto
    ciauz!
    W magica ROMA!

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    121
    fare il parsing di una pagina esterna non è molto facile perchè soprattutto se viene aggiornata spesso cambiando la sua struttura, sarai costretto a rimettere mano allo script.
    Ti faccio un esempio semplice, mi prendo le due tabelle centrali:

    <head>
    <style type="text/css">
    @import url(http://www.borsaitalia.it/media/css/styleScreen.css);
    </style>
    </head>
    <body>
    <?php
    $puntatore = fopen("http://www.borsaitalia.it/bitApp/scheda.bit?target=StrumentoMTA&isin=LU0156801721&l ang=it", "rb");

    $contenuto="";
    while (!feof($puntatore)) {
    $contenuto .= fread($puntatore, 8192);
    }

    $contenuto1=explode("main1schede",$contenuto);
    $contenuto2=explode("</div>",$contenuto1[1]);
    $contenuto_nuovo="<div class=\"main1schede".$contenuto2[0]."</div>";
    print($contenuto_nuovo);
    ?>

    devi andare prima a leggerti il source della pagina che devi parsare, quindi individuati degli elementi che ritieni che difficilmente possono essere cambiati all'interno di quella pagina (in questo caso il div main1schede) usi le funzioni explode o split per fare a fette la pagina. Se oltre all'html vuoi anche fregarti gli stili, aggiungi come ho fatto io l' @import del loro foglio di stile nei tag style

  9. #9
    Perfetto ti ringrazio tantissimo ho capito tutto!
    E ci sono anche riuscito :PP
    Grazie mille
    ciao!
    W magica ROMA!

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    272
    Scusate io ho provato l'ultimo codice:

    <?php
    $remote_site = $_GET['remote_site'];

    $puntatore = fopen($remote_site, "rb");

    $contenuto="";
    while (!feof($puntatore)) {
    $contenuto .= fread($puntatore, 8192);
    }

    $contenuto1=explode("Level:</td><td>",$contenuto);
    $contenuto2=explode("</td>",$contenuto1[1]);
    $contenuto_nuovo="Livello: ".$contenuto2[0].";
    print($contenuto_nuovo);
    ?>

    (ho modificato solo come prende il link, che cmq sarà http://www.example.com)

    però mi da errore:
    Parse error: syntax error, unexpected $end in /membri/miosito/php/Leggere HTML/dati.php on line 18


    Help!


    ---
    ps: il sito è su altervista, non so se centra qualcosa...

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.