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

    Problema codifica recuperando info url

    Sto recuperando le informazioni relative a titolo e descrizione di un url tramite php, la chiamata al file php che recupera queste informazioni viene fatta tramite una chiamata ajax ed il file ritorna queste informazioni in formato xml.

    Di seguito di vi posto il codice in completo in questione perchè il mio problema è molto specifico, ovvero ho dei problemi con il charset che non mi permettono di ricevere correttamente le informazioni Titolo e Descrizione relative ad alcuni specifici Url.

    E' un post un po lungo da seguire ma credo possa essere interessante e magari parti di questo codice possono essere riutilizzate da chi vuole trovare il Title e la Description di url vari.
    Praticamente è la stessa operazione che viene fatta da facebook quando nel campo input text della nostra bacheca inseriamo un url e lui trova l'informazione title e description.

    Inoltre prima di postare il codice vi linko la pagina dove è presente il codice che sto postando qui in modo che possiate provare il tutto per capire meglio la cosa.

    Il test lo trovate qui: http://www.mmospot.it/urlinfoxml/ è una pagina solo di test che ho creato per l'occassione perchè non sto trovando una soluzione. Esaminando il codice di questa pagina potete esaminare la parte javascript e la chiamata ajax mentre per la parte in php è postata qualche riga più avanti.

    Vi elenco alcuni url che potete provare che hanno il problema del charset ed altri che funzionano correttamenteper provare gli url fate copia e incolla nel campo di testo che trovate alla pagina di test che ho appena linkato)

    Problema con la è accentata:
    http://www.youtube.com/watch?v=GgUDe...feature=relmfu
    Questo addirittura rende il documento XML non valido
    http://www.youtube.com/watch?v=qBRwmT_LmK0

    Corretto:
    http://www.youtube.com/watch?v=R_5Tj...feature=relmfu
    Corretto:
    http://www.youtube.com/watch?v=_xOWc...eature=related

    per provare potete fare copia e incolla degli url, non scriveteli perchè il campo reagisce all'evento "onkeyup" e vi rallenterebbe.

    Questo è il file get_url_info.php protagonista della chiamata ajax che restituisce un file XML

    <?php
    function file_get_contents_curl($url)
    {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
    }
    $url=addslashes($_POST['url']);
    //trovo le informazioni relative all'url
    $html = file_get_contents_curl($url);
    //parsing begins here:
    $doc = new DOMDocument();
    @$doc->loadHTML($html);
    $nodes = $doc->getElementsByTagName('title');
    //get and display what you need:
    $title = $nodes->item(0)->nodeValue;
    $metas = $doc->getElementsByTagName('meta');
    for ($i = 0; $i < $metas->length; $i++)
    {
    $meta = $metas->item($i);
    if($meta->getAttribute('name') == 'description')
    $description = $meta->getAttribute('content');
    if($meta->getAttribute('name') == 'keywords')
    $keywords = $meta->getAttribute('content');
    }
    if(strlen($title)==0){$title="Nessun titolo";}
    if(strlen($description)==0){$description="Nessuna descrizione";}
    header('Content-type: text/xml');
    header('Pragma: public');
    header('Cache-control: private');
    header('Expires: -1');

    $outstr.="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<informazioniurl>\n";
    //genero il contenuto del file xml
    $outstr.="\t<url>\n";
    $outstr.="\t\t<title>".$title."</title>\n";
    $outstr.="\t\t<description>".$description."</description>\n";
    $outstr.="\t</url>\n";
    $outstr.="</informazioniurl>\n";
    echo $outstr;
    ?>

    Se servono altre informazioni chiedete pure.

  2. #2
    Se qualcosa non è chiaro chiedete, viene solo generato un file XML e ci sono problemi sulla codifica in alcuni casi.

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.