Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/01/2009, 15:54
Avatar de gabyweb
gabyweb
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 364
Antigüedad: 22 años, 4 meses
Puntos: 0
Pregunta Respuesta: Problema cuando utilizo 2 webservices

Y la otra clase es:

babel_fish_class

Código PHP:
 <?php
 header
('Content-Type: text/html; charset=utf-8');
 
/*******************************************************************************
 ** Class: babelfish
 ** Purpose: Translate text using Altavista Babelfish
 ** Filename: babelfish.class.php
 ** Author: Vedanta Barooah
 ** Author Email: vedanta . barooah @ gmail . com
 ** Date: June 19 2005
 ** Last Updated: June 27 2007
 **
 ** Other Contributors:[email protected],[email protected],Nikolay Kubarelov <[email protected]>
 ********************************************************************************/
 
 /* if ! PHP5 */
 
if (!function_exists('http_build_query')) {
    function 
http_build_query($formdata$numeric_prefix "")
    {
        
$arr = array();
        foreach (
$formdata as $key => $val)
          
$arr[] = urlencode($numeric_prefix.$key)."=".urlencode($val);
        return 
implode($arr"&");
    }
 }
 
/* translate text using altavista babelfish */
 
class babelfish{
     
/* array to store language names */
     
var $languages      =   NULL;
     
/* stores the altavista babelfish url*/
     
var $babel_url      =   NULL;
     
/* stores the search regex  (see readme for details) */
     
var $search_regex   =   NULL;
     
/* stores the data to be posted in an array (see readme for details) */
     
var $post_data      =   NULL;
     
/* stores the supported translation combination(s) */
     
var $valid_translate   =   NULL;
 
     
/* proxy support
     **
     */
     
var $useProxy           =    FALSE;
     var 
$proxyServer       =    NULL;
     var 
$proxyPort           =    NULL;
     var 
$timeOut           =    NULL;
 
     
/* class constructor */
     
function babelfish($url=NULL,$postdata=NULL,$regex=NULL){
 
         
/* list of languages */
         
$this->languages    =       array(
                                         
'en'    =>    'english',
                                         
'zh'    =>    'chinese',
                                         
'zt'    =>    'chinese-traditional',
                                         
'nl'    =>    'dutch',
                                         
'fr'    =>    'french',
                                         
'de'    =>    'german',
                                         
'el'    =>    'greek',
                                         
'it'    =>    'italian',
                                         
'ja'    =>    'japanese',
                                         
'ko'    =>    'korean',
                                         
'pt'    =>    'portuguese',
                                         
'ru'    =>    'russian',
                                         
'es'    =>    'spanish'
                                 
);
         
/* list of valid translations */
         
$this->valid_translate=array(
             
'zt_en','en_zh','en_zt','en_nl','en_fr',
             
'en_de','en_el','en_it','en_ja','en_ko',
             
'en_pt','en_ru','en_es','nl_en','nl_fr',
             
'fr_en','fr_de','fr_el','fr_it','fr_pt',
             
'fr_nl','fr_es','de_en','de_fr','el_en',
             
'el_fr','it_en','it_fr','ja_en','ko_en',
             
'pt_en','pt_fr','ru_en','es_en','es_fr'
         
);
 
         
/* babelfish service url */
         
if($url!=NULL)
             
$this->babel_url=$url;
         else
             
$this->babel_url="http://babelfish.yahoo.com/translate_txt";
         
/* data that is posted to the babelfish site */
         
if($postdata!=NULL)
             
$this->post_data=$postdata;
         else
             
$this->post_data=array(
                         
'doit'=>'done',
                         
'intl'=>'1',
                         
'tt'=>'urltext',
                         
'trtext'=>NULL,
                         
'lp'=>NULL
             
);
         
/* search for the translated text using this regex */
         
if($regex!=NULL)
             
$this->search_regex=$regex;
         else
              
#$this->search_regex='/<td bgcolor=white class=s><div style=padding:10px;>(.*)<\/div><\/td>/';
              #$this->search_regex='/<td bgcolor=white class=s><div style=padding:10px;>(.*)<\/div><\/td>/sm';
 
              
$this->search_regex='/<div id="result"><div style="padding:0.6em;">(.*)<\/div><\/div>/';
              
#$this->search_regex='/<input type=\"hidden\" name=\"p\" value=\"(.*)\">/sm';
              #$this->search_regex='/<td bgcolor=white class=s><div style=padding:10px;>(.*)<\/div><\/td>/sm';
     
}
 
     
/* set proxy settings */
     
function setProxy($proxyServer$proxyPort$timeOut=15){
         
$this->useProxy true;
         
$this->proxyServer $proxyServer;
         
$this->proxyPort $proxyPort;
         
$this->timeOut $timeOut;
     }
 
     
/* perform babelfish translation */
     
function translate($text,$from_language,$to_language,$forceUTF8=true){
         
$f=array_search(strtolower($from_language),$this->languages);
         if(!
$f){die("***error: source language not found");}
         
$t=array_search(strtolower($to_language),$this->languages);
         if(!
$t){die("***error: result language not found");}
         
$l=$f.'_'.$t;
         if(!
in_array($l,$this->valid_translate)){die("***error: cant translate with given combination ($l)");}
         
$this->post_data['trtext']=$text;
         
$this->post_data['lp']=$l;
         
$query=http_build_query($this->post_data);
         
$ch=curl_init();
         
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
         
curl_setopt($chCURLOPT_URLtrim($this->babel_url));
         
curl_setopt($chCURLOPT_RETURNTRANSFER1);
         
curl_setopt($chCURLOPT_POST1);
         
curl_setopt($chCURLOPT_POSTFIELDS$query);
         
curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (babelfish.class.php)");
         
curl_setopt($ch,CURLOPT_ENCODING "UTF-8");
         
/* use proxy if required */
         
if($this->useProxy){
             
curl_setopt($ch,CURLOPT_PROXY,$this->proxyServer.":".$this->proxyPort);
             
curl_setopt($ch,CURLOPT_TIMEOUT,$this->timeOut);
         }
         
$output curl_exec($ch);
         
curl_close($ch);
         
$result=preg_match($this->search_regex,$output,$match);
         if(
$result == 1){
             return 
htmlentities(strip_tags($match[0]));
         }else{
             return 
'** error : babelfish.class.php returned nothing';
         }
     }
 }
 
/* end of class  */
 
?>

Ojalá se den un tiempo y puedan revisar el código para ver qué es lo q estoy haciendo mal.

Gracias
__________________
Gaby :adios: