php 调用google在线翻译功能

 更新时间:2016年11月25日 16:30  点击:2087
我们主要是用到php 调用google在线翻译功能哦,post一个远程地址再用curl读取google翻译后的值就OK了。

class Google_API_translator {


public $out = "";

    function translate() {
        $this->out = "";
        $text = urlencode("computer");//要翻译的单词

        $google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=en&tl=zh_CN";

//拼凑google翻译的api url         
        $gphtml = $this->postPage(array("url" => $google_translator_url));

        $this->out = $gphtml;

return $this->out;
    }
    function postPage($opts) {
        $html = "";

if($opts["url"] != "") {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $opts["url"]);

            $html = curl_exec($ch);

 

if(curl_errno($ch)) $html = "";
            curl_close ($ch);
        }

return $html;
    }
}

$g = new Google_API_translator();

$g->translate();

很完美,返回的结果中没有任何编码问题。从google返回的中文编码完全正确。
接下来,能不能反向翻译,从中文到英文哪?

 

class Google_API_translator {


public $out = "";

    function translate() {
        $this->out = "";
        $text = urlencode("计算机");//要翻译的单词

        $google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=zh_CN&tl=en";

        echo $google_translator_url;
        $gphtml = $this->postPage(array("url" => $google_translator_url));

        $this->out = $gphtml;

return $this->out;
    }
    function postPage($opts) {
        $html = "";

if($opts["url"] != "") {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $opts["url"]);

            $html = curl_exec($ch);

 

if(curl_errno($ch)) $html = "";
            curl_close ($ch);
        }

return $html;
    }
}

$g = new Google_API_translator();

$g->translate();


问题出现了,返回的是一个乱码。诡异的是,这次接受的是google发送过来的英文单词,怎么会有编码错误?
是php的curl无法发送unicode编码或者google在接受的过程中出现了问题吗? 复制PHP内容到剪贴板 PHP代码:echo $google_translator_url;

 

得到的url是 复制PHP内容到剪贴板 PHP代码:http://translate.google.com/translate_a/t?client=t&text=%E8%AE%A1%E7%AE%97%E6%9C%BA&sl=zh_CN&tl=en

 

直接把这个url输入浏览器的地址栏,没有任何问题(IE,Firefox均能通过)。

假设途中unicode的传送出现了解析方面的问题,在api的url上更改了一下,把"&sl=zh_CN&tl=en"更改为完全错误的参数 复制PHP内容到剪贴板 PHP代码:http://translate.google.com/translate_a/t?client=t&text=%E8%AE%A1%E7%AE%97%E6%9C%BA&sl=en&tl=en

 

奇怪了这次php页面倒是能够接受到google发回来的中文字符串,但是死活就是无法显示使用正确的编码参数google发送过来结果。

很多php新手在开发自己的网站采集功能时都会直接用到file_get_contents来读取或fopen是吧,是吧,我们下载采集功能加强了了一点点就是要对方的防盗链都不能防止的采集功能。

function retrieveURLContentBySocket($url,
                                    $host="",
                                    $port=80,
                                    $timeout=30){
    if($host == ""){
        if(!($pos = strpos($url,'://'))){
            return false;
        }
        $host = substr( $url,
                        $pos+3,
                        strpos($url,'/',$pos+3) - $pos - 3);
        $uri = substr($url,strpos($url,'/',$pos+3));
    }
    else{
        $uri = $url;
    }

    $request =  "GET ".$uri." HTTP/1.0rn"
               ."Host: ".$host."rn"
               ."Accept: */*rn"
               ."User-Agent: ZealGetrn"
               ."rn";
    $sHnd = @fsockopen ($host, $port, $errno, $errstr, $timeout);
    if(!$sHnd){
        return false;
    }


    @fputs ($sHnd, $request);

    // Get source
    $result = "";
    while (!feof($sHnd)){
        $result .= fgets($sHnd,4096);
    }
    fclose($sHnd);

    $headerend = strpos($result,"rnrn");
    if (is_bool($headerend))
    {
        return $result;
    }
    else{
        return substr($result,$headerend+4);
    }

php 控制iis 404出错页面,本文档主要是讲一下用php管理web站点时间在设置404无法找到的页面时所用的控制方法哦。

<?
 # PHP控制站点程序
 #
 # 编写人:韩湘子
 #
 # 邮箱:hanxiangzi@gmail.com
 #
 # MSN:hanxiangzi@gmail.com
 #
 # QQ:220670        
 #
 # 欢迎大家互相联系讨论
?> 
<link href="image/css.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
 background-color: #D4D0C8;
}
-->
</style>
<?php

 $Site = New Com("IIS://Localhost/w3svc/".$ServerID);

 iF($Submit){
  $Site->HttpErrors = "404,*,Url,".$httperr;
  $Site->SetInfo();
 }

?>
<table width="100%" border="0" cellspacing="0" cellpadding="3">
  <tr>
    <td><a href="3.php"><strong>返回主机列表</strong></a></td>
  </tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="3">
  <tr>
    <td><a href="33.php?ServerID=<?php echo $ServerID;?>">返回主机管理</a></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>
<form action="?ServerID=<?php echo $ServerID;?>" method="POST">
设置404错误 <input type=input value="" size=80 name="httperr"><input type="Submit" name="Submit" value="提交">
<br>格式:/路径/文件.htm,例如:/404.htm
</form>

php控制iis设置默认文档,我们前面讲过了用php 的new com接口来设置iis的默认文档。

<?
 # PHP控制站点程序
 #
 # 编写人:韩湘子
 #
 # 邮箱:hanxiangzi@gmail.com
 #
 # MSN:hanxiangzi@gmail.com
 #
 # QQ:220670        
 #
 # 欢迎大家互相联系讨论
?> 
<link href="image/css.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
 background-color: #D4D0C8;
}
-->
</style>
<?php

 $Site = New Com("IIS://Localhost/w3svc/".$ServerID);

 iF($Submit){
  $Site->DefaultDoc = $DefaultDocList;
  $Site->SetInfo();

 }
 
?>
<table width="100%" border="0" cellspacing="0" cellpadding="3">
  <tr>
    <td><a href="3.php"><strong>返回主机列表</strong></a></td>
  </tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="3">
  <tr>
    <td><a href="33.php?ServerID=<?php echo $ServerID;?>">返回主机管理</a></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>
<form action="?ServerID=<?php echo $ServerID;?>" method="POST">
请输入默认文档,以英文符号,隔开 <input type=input value="<?php echo $Site->DefaultDoc;?>" size=80 name="DefaultDocList"><input type="Submit" name="Submit" value="提交">
</form>

我们用php来控制iis并且,在WEB上创建网站,管理删除等功能哦。

<?
 

# PHP控制站点程序
 #
 # 编写人:韩湘子
 #
 # 邮箱:hanxiangzi@gmail.com
 #
 # MSN:hanxiangzi@gmail.com
 #
 # QQ:220670        
 #
 # 欢迎大家互相联系讨论
?> 
<link href="image/css.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
 background-color: #D4D0C8;
}
-->
</style>
<table width="980" border="0" cellpadding="5" cellspacing="1" bgcolor="#000000">
  <tr height=26>
    <td width="177" bgcolor="#E8E6E1">站点名称</td>
    <td width="229" bgcolor="#E8E6E1">绑定域名</td>
    <td width="210" bgcolor="#E8E6E1">网站目录</td>
    <td width="116" bgcolor="#E8E6E1">标识符</td>
    <td width="97" bgcolor="#E8E6E1">站点状态</td>
    <td colspan="2" bgcolor="#E8E6E1"><div align="center">管理</div></td>
  </tr>
<?php

 $LocalHostObject = New Com ("IIS://localhost/w3svc") ;

 

 //删除站点
 iF($Opt=="del"){
  $LocalHostObject->Delete("IIsWebServer",$ServerID);
  echo "<script>window.location='3.php';</script>";
 }

 //启动和停止站点
 iF($Opt=="Status"){
  $Site2 = New Com ("IIS://LocalHost/w3svc/".$ServerID);
  $Site2->$Status;
 }


 //创建新站点
 iF($Submit){

  //创建目录
//  mkdir(stripslashes($ServerDir));


  //添加用户
  $usernameobj = New Com("WinNT://iim");
  $user = $usernameobj->Create("user",$ServerComm);


  //设置用户名
  $user->SetInfo();

  //设置密码
  $user->SetPassword($ServerComm);
 // $user->UserFlags('&H0040');
  $user->SetInfo();

  $usernameobj1 = New Com("WinNT://iim/".$ServerComm);
  $user->Description ="本用户名由iiM在线管理系统创建.";
  $user->SetInfo();

  #就差一个把用户加载到目录上的权限问题了################################################################################################

 


  //创建站点


  $iissite = $LocalHostObject->Create("IIsWebServer",$ServerID);

  $aa = explode(",",$ServerBin);

//  //先设定站点的基本资料
  $iissite->ServerBindings = $aa;
  $iissite->ServerComment = $ServerComm;
  $iissite->AnonymousUserName = $ServerComm;
  $iissite->AnonymousUserPass = $ServerComm;
  $iissite->KeyType = "IIsWebServer";
  $iissite->EnableDefaultDoc = True;
  $iissite->DefaultDoc = "default.htm,default.asp,index.htm,index.html";
  $iissite->LogFileDirectory = "d:\";
  $iissite->MaxBandwidth = '102400';
  $iissite->MaxConnections = '100';
  $iissite->LogType = "0";
  $iissite->AppIsolated = 0;
  $iissite->AuthBasic = False;
  $iissite->AuthNTLM = True;
  $iissite->HttpErrors = "404,*,FILE,C:WINDOWShelpiisHelpcommon404b.htm";
  //加上脚本映射
  foreach($scriptmapsubmit as $script){
   Switch($script){
    Case "asp";
     $sc[] = ".asa,C:WINDOWSsystem32inetsrvasp.dll,5";
     $sc[] = ".asp,C:WINDOWSsystem32inetsrvasp.dll,5";
     break;
    Case "php";
     $sc[] = ".php,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
     $sc[] = ".php3,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
     $sc[] = ".php4,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
     $sc[] = ".php5,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
     $sc[] = ".php6,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
     break;
    Case "cgi";
     echo "cgi<br>";
     break;
    Case "aspnet";
     echo "asp.net<br>";
     break;
    Case "html";
     echo "html";
     break;

   }
   
  }
  $iissite->ScriptMaps = $sc;
  $iissite->SetInfo();

  //再设定站点目录
  $iisdir = $iissite->Create("IIsWebVirtualDir","ROOT");
  $ServerDir1 = stripslashes($ServerDir);
  $iisdir->Path = $ServerDir1;
  $iisdir->AppCreate(True) ;
  $iisdir->AccessRead = True;
  $iisdir->EnableDirBrowsing = False;

  //允许父路径,也就是允许.
  $iisdir->AspEnableParentPaths = True;
  $iisdir->AccessScript = True;
  $iisdir->AppFriendlyName = "默认应用程序";
  $iisdir->SetInfo();
 
  //启动站点
  $Site1->Start;

  echo "<script>window.location='3.php';</script>";

 }

 //列出所有网站
 ForEach($LocalHostObject as $WebSiteName){
  iF($WebSiteName->Class == "IIsWebServer"){
   $Site = New Com ("IIS://localhost/w3svc/".$WebSiteName->Name) ;
   //站点状态
   $SiteStatus1 = $Site->Status ;
   Switch($SiteStatus1){
    Case "2" ;
     $SiteStatus = "<a href=?Opt=Status&Status=stop&ServerID=$Site->Name>正常</a>" ;
     break;
    Case "6" ;
     $SiteStatus = "<a href=?Opt=Status&Status=start&ServerID=$Site->Name><font color=red>暂停</font></a>" ;
     break;
    Case "4" ;
     $SiteStatus = "<a href=?Opt=Status&Status=start&ServerID=$Site->Name><font color=red>停止</font></a>" ;
     break;
   }


?>
  <tr height=26>
    <td bgcolor="#F4F3F2" ><?php Echo $Site->ServerComment ; ?></td>
    <td bgcolor="#F4F3F2">
<?php
 //得出绑定的域名
   $BinDings = $Site->ServerBinDings;
   ForEach($BinDings as $BinDing){
    List($ip, $Port, $Domain) = Explode(":",$BinDing);
    Echo $Domain ."<br>";
   }

?> </td>
    <td bgcolor="#F4F3F2">
<?
 //网站目录

 $getRootDir = $Site->GetObject("IIsWebVirtualDir","ROOT");
 echo $getRootDir->Path;
?></td>
    <td bgcolor="#F4F3F2"><?php Echo $Site->Name ; ?></td>
    <td bgcolor="#F4F3F2"><?php Echo $SiteStatus ; ?></td>
    <td width="40" bgcolor="#F4F3F2"><div align="center"><a href=?Opt=del&ServerID=<?php Echo $Site->Name?>>删除</a></div></td>
    <td width="33" bgcolor="#F4F3F2"><div align="center"><a href=33.php?ServerID=<?php Echo $Site->Name ; ?>>管理</a></div></td>
  </tr>
<?php
  }
 }
 unset($LocalHostObject);
 unset($Site);
 unset($Site1);
 unset($Site2);
?>
</table>
 <form id="form1" name="form1" method="post" action="">
   <table width="100%" border="0" cellspacing="0" cellpadding="3">
     <tr>
       <td width="8%">站点名称</td>
       <td width="92%"><input type="text" name="ServerComm" /></td>
     </tr>
     <tr>
       <td>站点目录 </td>
       <td><input type="text" name="ServerDir" value="F:user"/></td>
     </tr>
     <tr>
       <td>站点ID号 </td>
       <td><input type="text" name="ServerID"/></td>
     </tr>
     <tr>
       <td>Serverbin</td>
       <td><textarea name="ServerBin" cols="80" rows="5"></textarea></td>
     </tr>
     <tr>
       <td>脚本映射</td>
       <td><input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="asp" />
ASP
  <input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="php" />
PHP
<input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="cgi" />
CGI
<input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="aspnet" />
ASP.NET
<input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="html" checked="checked" />
HTML</td>
     </tr>
     <tr>
       <td><input type="submit" name="Submit" value="Submit" /></td>
       <td>&nbsp;</td>
     </tr>
   </table>
</form>
 

[!--infotagslink--]

相关文章

  • Spring AOP 对象内部方法间的嵌套调用方式

    这篇文章主要介绍了Spring AOP 对象内部方法间的嵌套调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-29
  • 百度网盟和google网盟推广那种效果好

    专做了百度和google的网盟推广以作推广效果的评估比较。百度的周期为6天,google为4天。   从百度的统计数据可以看出这六天的点击次数总共为464,平均点击花费了0.30元...2017-07-06
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • c# 三种方法调用WebService接口

    这篇文章主要介绍了c# 三种方法调用WebService接口的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
  • js实现调用网络摄像头及常见错误处理

    这篇文章主要介绍了js实现调用网络摄像头及常见错误处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-07
  • c#动态调用Webservice的两种方法实例

    这篇文章介绍了c#动态调用Webservice的两种方法实例,有需要的朋友可以参考一下...2020-06-25
  • c#中WebService的介绍及调用方式小结

    这篇文章主要给大家介绍了关于c#中的WebService及其调用方式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • 解决Vue watch里调用方法的坑

    这篇文章主要介绍了解决Vue watch里调用方法的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
  • 解决vue watch数据的方法被调用了两次的问题

    这篇文章主要介绍了解决vue watch数据的方法被调用了两次的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
  • C#中加载dll并调用其函数的实现方法

    下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • PHP调用MySQL存储过程并返回值实现程序

    本文章来给大家详细介绍在php中如何来调用执行mysql存储过程然后返回由存储过程返回的值了,有需要了解的同学可进入参考。 。调用存储过程的方法。 a。如果存储过...2016-11-25
  • C#异步调用的好处和方法分享

    我们要明确,为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了...2020-06-25
  • C#调用python脚本的方法步骤(2种)

    这篇文章主要介绍了C#调用python脚本的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • javascript实现方法调用与方法触发小结

    这篇文章主要介绍了javascript实现方法调用与方法触发小结的相关资料,需要的朋友可以参考下...2016-03-30
  • C#实现图片放大功能的按照像素放大图像方法

    这篇文章主要介绍了C#实现图片放大功能的按照像素放大图像方法,功能非常实用,需要的朋友可以参考下...2020-06-25
  • python中翻译功能translate模块实现方法

    在本篇文章中小编给各位整理了一篇关于python中翻译功能translate模块实现方法,有需要的朋友们可以参考下。...2020-12-18
  • 浅谈PHP调用Webservice思路及源码分享

    方法一:直接调用复制代码 代码如下:<? /******************************************************************************/ /* 文件名 : soapclient.php /* 说 明 : WebService接口客户端例程 /****************...2014-06-07
  • 基于C#调用c++Dll结构体数组指针的问题详解

    下面小编就为大家分享一篇基于C#调用c++Dll结构体数组指针的问题详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • C# Soap调用WebService的实例

    下面小编就为大家带来一篇C# Soap调WebService的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • Python调用.NET库的方法步骤

    这篇文章主要介绍了Python调用.NET库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-09