Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di kakashi
    Registrato dal
    Feb 2005
    Messaggi
    357

    Parse & Traduzione [HELP]

    Salve ragazzi, vi espongo il mio problema.
    Ho effettuo un parser di dati da un sito giapponese (fin qui tutto ok), i dati vengono ripresi e stampati, ma quando richiamo API di google per effettuare la traduzione dei dati, non mi riporta l'effettiva traduzione ma una serie di rombi e ?..

    Come posso risolvere?
    VI posto il codice sperando in un vostro aiuto
    Codice PHP:
    require_once("libs/class.db.php");
        require_once(
    "includes/function-base.php");
        
        include(
    "libs/simple_html_dom.php");
        
    $url "http://www.php.co.jp/fun/ranking/books.php?genre=f";
        
    $html file_get_html($url);

        
    $table $html->find('table.rank',0);
        
    $elementi=array();    
        
    $cont=0;
        
        foreach(
    $table->find('tr') as $row){
        
    $cont++;
           foreach(
    $row->find('td') as $column){
               
    $elementi[$cont][]= trim(htmlentities($column->innertext));
           }
        }
        
        
    $new_array = array();
        for(
    $n=3;$n<=12;$n++){
            unset(
    $elementi[$n][0]);
            unset(
    $elementi[$n][2]);
            unset(
    $elementi[$n][3]);
            unset(
    $elementi[$n][4]);
            
    $new_array[] = $elementi[$n][1];
        }
      
        function 
    remove($stringa){
            
    $stringas preg_replace("|\<span class=\"google-src-text\" style=\"direction: ltr; text-align: left\">(.*?)\<\/span\>|i","",$stringa);
            return 
    $stringas;
        }
        
        function 
    t_s($s){
            
    $query urlencode($s);
            
    $url "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".$query."&langpair=ja|en";
            
    $ci curl_init();
            
    curl_setopt($ciCURLOPT_URL$url);
            
    curl_setopt($ciCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($ciCURLOPT_REFERER"http://www.mysite.info/");
            
    $raw curl_exec($ci);
            
    curl_close($ci);
             
            
    $result json_decode($rawtrue);
            return 
    $result['responseData']['translatedText'];
        }
        
        
    //FINE RICERCA
        //header('Content-Type: text/html; charset=utf-8');
        
    $mese = array (1=>"Gennaio""Febbraio""Marzo""Aprile""Maggio""Giugno""Luglio""Agosto""Settembre""Ottobre""Novembre""Dicembre");    
             
        
    //OGGETTO NEWS
        
    $title "[".date("d")." ".$mese[date("n")]." ".date("Y")."]";
        
    //NEWS
        
    $mssage "Giappone [".date("d")." ".$mese[date("n")]." ".date("Y")."].\n";
          
        
    //3 IMMAGINI
        
    $mx 3;
        
    $now 1;
        
    $mssage .= "

    "
    ;
         
        foreach(
    $new_array as $am => $m){
                if(
    $now $mx){}
                else{                         
                    
    $m remove($m);
                    
    $m strip_tags($m);
                    
    //$ritorno = imagesearch($m);
                    //if($ritorno[report] == TRUE){$now++;}
                    //$mssage .= $ritorno[message];
                
    }
        }    
        
    $mssage .= "</p>";
        
        
    $j=0;
        foreach(
    $new_array as $am => $m){
            
    $j++;
                
    //traduzione
                            
                
    $m remove($m);
                
    $m strip_tags($m);   
                
    $mssage .= "[b]".$j."][/b] ".t_s($m)."
    \n"
    ;
                
    //$mssage .= "[b]".$j."][/b] ".mangasearch($m)."
    \n";
        } 
    Vi Prego aiutatemi

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Suppongo google si aspetti dati in utf8, mentre tu glieli passi in euc-jp.

    prova a fare un $query = mb_convert_encoding($query, "EUC-JP", "UTF-8"); prima di passare la $query a google..
    Se non hai l'estensione mbstring, fai la conversione con iconv.
    Naturalmente anche la tua pagina dove vengono visualizzati i dati deve essere in utf-8.

  3. #3
    Utente di HTML.it L'avatar di kakashi
    Registrato dal
    Feb 2005
    Messaggi
    357
    ciao, grazie della risposta, ho provato entrambe le funzioni ma non funziona

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    argh, perche' i parametri vanno passati in ordine contrario, mi sono sbagliato
    prova con
    mb_convert_encoding($query, "UTF-8","EUC-JP");

  5. #5
    Utente di HTML.it L'avatar di kakashi
    Registrato dal
    Feb 2005
    Messaggi
    357
    niente continua a non andare!

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Beh, e' sicuramente un problema di codifica. Io pero' non posso fare prove, non ho i file che includi.

    Ma e' sicuramente un problema di codifica: o passi a google i dati non in utf8, o semplicemente la tua pagina dove si visualizzano non e' in utf8. Controlla attentamente queste 2 cose.

  7. #7
    Utente di HTML.it L'avatar di kakashi
    Registrato dal
    Feb 2005
    Messaggi
    357
    l'unico file importante che include č
    Codice PHP:
    include("libs/simple_html_dom.php"); 
    il resto serve solo per fare delle verifiche nel database..

    Ti inserisco il link dove scaricare la libreria sperando in una tua prova.

    Grazie

    File reperibile: LINK/

  8. #8
    Utente di HTML.it L'avatar di kakashi
    Registrato dal
    Feb 2005
    Messaggi
    357
    Grazie finalmente ho risolto
    posto il codice non si sā mai serva a qualcuno

    Codice PHP:
    header("Content-Type: text/html; charset=utf-8");
        
        include(
    "libs/simple_html_dom.php");
        
    $url "http://www.php.co.jp/fun/ranking/books.php?genre=f";
        
    $html file_get_html($url);

        
    $table $html->find('table.rank',0);
        
    $elementi=array();    
        
    $cont=0;
        
        foreach(
    $table->find('tr') as $row){
        
    $cont++;
           foreach(
    $row->find('td') as $column){
                
    $elemento trim($column->innertext);
                
    //$elementi[$cont][] = mb_convert_encoding($elemento, "UTF-8","EUC-JP");
                
    $elementi[$cont][] = trim($column->innertext);
           }
        }
        
        
    $new_array = array();
        for(
    $n=3;$n<=12;$n++){
            unset(
    $elementi[$n][0]);
            unset(
    $elementi[$n][2]);
            unset(
    $elementi[$n][3]);
            unset(
    $elementi[$n][4]);
            
    $new_array[] = $elementi[$n][1];
        }
        
        
    //print_r($new_array);
        
        
    function remove($stringa){
            
    $stringas preg_replace("|\<span class=\"google-src-text\" style=\"direction: ltr; text-align: left\">(.*?)\<\/span\>|i","",$stringa);
            return 
    $stringas;
        }
        
        function 
    t_s($s){
            
    $query mb_convert_encoding($s"UTF-8","EUC-JP");
            
    $query urlencode($query);
            
    $url "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".$query."&langpair=ja|en";
            
    $ci curl_init();
            
    curl_setopt($ciCURLOPT_URL$url);
            
    curl_setopt($ciCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($ciCURLOPT_REFERER"youtsite");
            
    $raw curl_exec($ci);
            
    curl_close($ci);
             
            
    $result json_decode($rawtrue);
            return 
    $result['responseData']['translatedText'];
        }
        
        
    //FINE RICERCA
        
    $mese = array (1=>"Gennaio""Febbraio""Marzo""Aprile""Maggio""Giugno""Luglio""Agosto""Settembre""Ottobre""Novembre""Dicembre");    
             
        
    //OGGETTO NEWS
        
    $title "[".date("d")." ".$mese[date("n")]." ".date("Y")."]";
        
    //NEWS
        
    $mssage = [".date("d")." ".$mese[date("n")]." ".date("Y")."].\n";
          
        
    $j=0;
        foreach(
    $new_array as $am){
            
    $j++;
                //traduzione
                
    $m = t_s($am);
                            
                
    $m = remove($m);
                
    $m = strip_tags($m);   
                //
    $mssage .= "[b]".$j."][/b".t_s($am)."
    \n";
                
    $mssage .= "[b]".$j."][/b".mangasearch($m)."
    \n";
        } 

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    gia', avevo appena fatto la prova e notato la htmlentities inutile, e stavo scrivendo la risposta.. per forza che non andava

  10. #10
    Utente di HTML.it L'avatar di kakashi
    Registrato dal
    Feb 2005
    Messaggi
    357
    grazie bubi1 sei stato gentilissimo

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.