Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    16

    determinare nome pagina da link

    ciao a tutti, ho un problema ma non sono sicuro che riguardi java. Ho visto su g+ che quando inserisco un link in un form il sito riesce ad estrarre il nome e la descrizione della pagina. Come posso ricreare lo script?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    16
    Up, in rete non ho trovato niente

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Chi conosce Javascript sa che non e' possibile... dato che il linguaggio puo' interagire solo con le pagine del sito a cui appartiene lo script, non con altri domini (scusa la semplificazione)

    Se indichi quale linguaggio lato server (ASP, PHP, JSP, altro...) puoi/vuoi usare ti sposto
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    16
    In effetti non conosco javascript mi occupo principalmente di programmazione lato server.
    Puoi spostarmi in php? vediamo cosa mi dicono...

  5. #5
    Ciao, inannzitutto, dipende cosa intendi per descrizione, infatti il nome della pagina puoi averlo direttamente dal link, ovvero se il link è tipo: http://sito.it/reply.php, il nome della pagina è direttamente reply, e puoi prenderlo tranquillamente con qualche banale funzione php.
    Se ti serve la descrizione o qualsiasi altra cosa che non puoi prendere dal link, devi implementare una funzione più complessa, ovvero devi simulare di aprire la pagina tramite browser per vedere il contenuto, questo puoi farlo con cURL, o con fopen, a seconda se il tuo hosting lo permette o meno.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    16
    Praticamente io dovrei scaricare il meta title e il meta description. Comunque ora guardo le funzioni che mi hai dato

  7. #7
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Prova con qualcosa del genere (l'ho scritta ora quindi controlla che non vi siano errori e migliorala)

    Codice PHP:
    class htmlParser
    {
        protected 
    $title;
        protected 
    $metas;
        protected 
    $source;
        
        public function 
    __construct($source)
        {
            if (!
    is_string($source))
            {
                throw new 
    Exception('Il sorgente della pagina deve essere una stringa');
            }
            
            
    $this->source $source;
        }

        public function 
    getSource()
        {
            return 
    $this->source;
        }
        
        public function 
    getTitle($default null)
        {
            if (!
    $this->title)
            {
                if (
    preg_match("/<title>([^>]*)<\/title>/i"$this->source$title))
                {
                    
    $this->title strip_tags($title[1]);
                }
                else 
                {
                    
    $this->title $default;
                }            
            }
            
            return 
    $this->title;
        }
        
        public function 
    getMetas()
        {
            if (!
    $this->metas)
            {
                 if (
    preg_match_all("/<meta[^>]+name=\"([^\"]*)\"[^>]" "+content=\"([^\"]*)\"[^>]+>/i"$this->source$metas))        
                 {
                     
    $count count($metas[0]);
                    
    $res   = array();
                    
                     for (
    $i 0$i $count$i++)
                     {
                         
    $res[strtolower(trim($metas[1][$i]))] = trim($metas[2][$i]);
                     }
                    
                     
    $this->metas $res;
                 }
                 else 
                 {
                     
    $this->metas = array();
                 }
                
            }
            
            return 
    $this->metas;
        }
        
        public function 
    getMeta($meta$default null)
        {
            if (
    $this->hasMeta($meta))
            {
                return 
    $this->metas[strtolower($meta)];
            }
            
            return 
    $default;
        }
        
        public function 
    hasMeta($meta)
        {
            if (!
    $this->metas)
            {
                
    $this->getMetas();    
            }
            
            return (bool) isset(
    $this->metas[strtolower($meta)]);
        }
    }

    $hp = new htmlParser(file_get_contents('http://www.sitochevuoitu.it'));
    echo 
    'Titolo => ' $hp->getTitle('Nessun titolo') . '
    '
    ;
    echo 
    'Descrizione => ' $hp->getMeta('description''Nessuna descrizione'); 
    Ti scrivo qui le due espressioni sperando che non le modifichi:

    "/<title>([^>]*)<\/title>/i"
    "/<meta[^>]+name=\"([^\"]*)\"[^>]" . "+content=\"([^\"]*)\"[^>]+>/i"
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    16
    Ciao grazie mille per lo script, anche se è un pò complesso per i miei standard .

    Ho provato ad eseguire la classe, ma questa blocca la pagina e mi restituisce questo errore:

    [06-Apr-2012 06:30:31 UTC] PHP Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in index.php on line 1568
    [06-Apr-2012 06:30:31 UTC] PHP Fatal error: Uncaught exception 'Exception' with message 'Il sorgente della pagina deve essere una stringa' in function.in.php:12
    Stack trace:
    #0 index.php(1568): htmlParser->__construct(false)
    #1 index.php(3013): Page_All('3', 20)
    #2 {main}
    thrown in function.in.php on line 12

  9. #9
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Il warning viene generato perchè come argomento a file_get_contents(ARGOMENTO) non passi nulla... devi mettere l'indirizzo del sito che intendi parsare. L'eccezione viene sollevata di conseguenza, perchè il costruttore si aspetta una stringa e non false. Ovviamente per ottenere il sorgente non sei costretto ad utilizzare file_get_contents(), ma puoi anche ad esempio utilizzare curl (preferibile, cosi puoi gestire eventuali redirect o pagine non trovate). Qualunque soluzione intendi adottare, l'importante è che il costruttore della classe riceva l'effettivo sorgente della pagina di tuo interesse.
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    16
    Avevo messo il link corretto... cmq ora funziona mostra la descrizione ma non il titolo
    Restituisce questo errore:

    [06-Apr-2012 10:58:50 UTC] PHP Warning: preg_match() [function.preg-match]: Unknown modifier 't' in function.in.php on line 27

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 © 2024 vBulletin Solutions, Inc. All rights reserved.