php调用google在线翻译功能

 更新时间:2016年11月25日 16:30  点击:1381
php调用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();

从英语到中文

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返回的中文编码完全正确。

php分页显示函数 源代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>google分页</title>
<meta name="keywords" content="仿google php分页程序 " />
<meta name="description" content="仿google php分页程序" />
<style type="text/css">
<!--
body { font-family: Arial, Helvetica, sans-serif; font-size: 12px; margin: 0px; padding: 0px; }
div { height: auto; width: 800px; margin: 10px auto; line-height:20px; }

/*CSS manu style pagination*/

.manu {
 PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 3px; PADDING-TOP: 3px; TEXT-ALIGN: center
}
.manu A {
 BORDER-RIGHT: #eee 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #eee 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #eee 1px solid; COLOR: #036cb4; PADDING-TOP: 2px; BORDER-BOTTOM: #eee 1px solid; TEXT-DECORATION: none
}
.manu A:hover {
 BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-LEFT: #999 1px solid; COLOR: #666; BORDER-BOTTOM: #999 1px solid
}
.manu A:active {
 BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-LEFT: #999 1px solid; COLOR: #666; BORDER-BOTTOM: #999 1px solid
}
.manu .current {
 BORDER-RIGHT: #036cb4 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #036cb4 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #036cb4 1px solid; COLOR: #fff; PADDING-TOP: 2px; BORDER-BOTTOM: #036cb4 1px solid; BACKGROUND-COLOR: #036cb4
}
.manu .disabled {
 BORDER-RIGHT: #eee 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #eee 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #eee 1px solid; COLOR: #ddd; PADDING-TOP: 2px; BORDER-BOTTOM: #eee 1px solid
}

-->
</style>
</head>

<body>
<?php

require('web_page.php'); //包含分页程序


//数据库配置
$mysql_host = 'localhost'; //数据库服务器
$mysql_user = 'root'; //数据库用户名
$mysql_pass = '123456'; //数据库密码
$mysql_db = 'test'; //数据库名


//连接mysql数据库

$link = mysql_connect($mysql_host,$mysql_user,$mysql_pass) or die ('连接MYSQL服务器出错');
  mysql_select_db($mysql_db,$link) or die ('连接MYSQL数据库出错');


//分页开始

$sql_page = "select news_id,news_title from cms_news order by news_id desc";
$sql = mysql_query($sql_page);
$num = mysql_num_rows($sql);  //总条数
$max = 1;  //每页条数
$pagenum = ceil($num/$max);  //可分页数
if(!isset($_GET['page']) or !intval($_GET['page']) or !is_numeric($_GET['page']) or $_GET['page'] > $pagenum){
 $page = 1; //当页数不存在 不为十进制数 不是数字 大于可分页数 为1
}else{
 $page = $_GET['page'];  //当前页数
}
$min = ($page-1)*$max;  //当前页从$min条开始

$sql = "{$sql_page} limit $min,$max";


echo '<div>';
if($num){
 $sql = mysql_query($sql);
 for(;$row = mysql_fetch_array($sql);){
  echo '<li><a href="show.php?id='.$row['news_id'].'">'.$row['news_title'].'</a></li>';
 }
}else{
 echo '<li>暂无</li>';
}
echo '</div>';

//mysql_free_result($sql); //释放资源

?>

<div class="manu"><?php web_page(""); //调用输出分页,引用你的页面其他参数 如:web_page("&class=2&news=6") ?></div>

<?php
//分页结束
mysql_close();
?>

</body>
</html>

上面为调用方法下面为分页程序

<?php

 

function web_page($pageurl="", $pageselect = true){

 global $page,$num,$pagenum; //当前页数 总页数 可分页数

 echo "共 $num 条记录,";

 $uppage = $page - 1;  //上一页
 $downpage = $page + 1;  //下一页
 $lr = 5;  //显示多少个页数连接
 $left = floor(($lr-1)/2);  //左显示多少个页数连接
 $right = floor($lr/2);  //右显示多少个页数连接

 //下面求开始页和结束页
 if($page <= $left){  //如果当前页左不足以显示页数
  $leftpage = 1;
  $rightpage = (($lr<$pagenum)?$lr:$pagenum);
 }elseif(($pagenum-$page) < $right){  //如果当前页右不足以显示页数
  $leftpage = (($pagenum<$lr)?1:($pagenum-$lr+1));
  $rightpage = $pagenum;
 }else{  //左右可以显示页数
  $leftpage = $page - $left;
  $rightpage = $page + $right;
 }

 //前$lr页和后$lr页
 $qianpage = (($page-$lr) < 1?1:($page-$lr));
 $houpage = (($page+$lr) > $pagenum?$pagenum:($page+$lr));

 //输出分页
 if($page != 1){
  echo "<a title="首页" href="".$_SERVER['PHP_SELF']."?$pageurl"><<</a> <a title="上一页" href="".$_SERVER['PHP_SELF']."?page=$uppage$pageurl"><</a> ";
 }else{
  echo "<span class='disabled'><<</span><span class='disabled'><</span> ";
 }

 for($pages = $leftpage; $pages <= $rightpage; $pages++){
  if($pages == $page){
   echo "<span class='current'>$pages</span> ";
  }else{
   echo "<a href="?page=$pages$pageurl">$pages</a> ";
  }
 }

 if($page != $pagenum){
  echo "<a title="下一页" href="".$_SERVER['PHP_SELF']."?page=$downpage$pageurl">></a> <a title="末页" href="".$_SERVER['PHP_SELF']."?page=$pagenum$pageurl">>></a>";
 }else{
  echo "<span class='disabled'>></span><span class='disabled'> >></span> ";
 }

 //跳转
 $javapage = <<<EOM
<script language="javascript">
function web_page(targ,selObj,restore){
 eval("self"+".location='"+selObj.options[selObj.selectedIndex].value+"'");
 if (restore) selObj.selectedIndex=0;
}
</script>
EOM;
 echo $javapage;
 if ($pageselect){
  echo "跳转至 <select onchange="web_page('parent',this,0)" name="menu1">";
  for($pages = 1; $pages <= $pagenum; $pages++){
   $selected = ($pages == $page)?" selected="selected"":"";
   echo "<option value="".$_SERVER['PHP_SELF']."?page=$pages$pageurl"$selected> $pages</option>";
  }
  echo "</select> 页";
 }

}
?>

下面一段生成html文件类是一款用php的fopen生成html 静态文件的方法好,好了费话不说多了我们来看看吧。

class html
{
    var $dir;
    var $rootdir;
    var $name;
    var $dirname;
    var $url;
    var $time;
    var $dirtype;
    var $nametype;

    function html($nametype='name',$dirtype='year',$rootdir='html')
    {
        $this->setvar($nametype,$dirtype,$rootdir);
    }

    function setvar($nametype='name',$dirtype='year',$rootdir='html')
    {
      $this->rootdir=$rootdir;
      $this->dirtype=$dirtype;
      $this->nametype=$nametype;
    }

    function createdir($dir='')
    {
        $this->dir=$dir?$dir:$this->dir;

        if (!is_dir($this->dir))
        {
            $temp = explode('/',$this->dir);
            $cur_dir = '';
            for($i=0;$i<count($temp);$i++)
            {
                $cur_dir .= $temp[$i].'/';
                if (!is_dir($cur_dir))
                {
                @mkdir($cur_dir,0777);
                }
            }
        }
    }

    function getdir($dirname='',$time=0)
    {
        $this->time=$time?$time:$this->time;
        $this->dirname=$dirname?$dirname:$this->dirname;

        switch($this->dirtype)
        {
        case 'name':
        if(empty($this->dirname))
           $this->dir=$this->rootdir;
        else
           $this->dir=$this->rootdir.'/'.$this->dirname;
        break;
        case 'year':
        $this->dir=$this->rootdir.'/'.date("Y",$this->time);
        break;

        case 'month':
        $this->dir=$this->rootdir.'/'.date("Y-m",$this->time);
        break;

        case 'day':
        $this->dir=$this->rootdir.'/'.date("Y-m-d",$this->time);
        break;
        }

        $this->createdir();

        return $this->dir;
    }

    function geturlname($url='')
    {
        $this->url=$url?$url:$this->url;

        $filename=basename($this->url);
        $filename=explode(".",$filename);
        return $filename[0];
    }

    function geturlquery($url='')
    {
        $this->url=$url?$url:$this->url;

        $durl=parse_url($this->url);
        $durl=explode("&",$durl[query]);
        foreach($durl as $surl)
        {
          $gurl=explode("=",$surl);
          $eurl[]=$gurl[1];
        }
        return join("_",$eurl);
    }

    function getname($url='',$time=0,$dirname='')
    {
        $this->url=$url?$url:$this->url;
        $this->dirname=$dirname?$dirname:$this->dirname;
        $this->time=$time?$time:$this->time;

        $this->getdir();

        switch($this->nametype)
        {
        case 'name':
        $filename=$this->geturlname().'.htm';
        $this->name=$this->dir.'/'.$filename;
        break;

        case 'time':
        $this->name=$this->dir.'/'.$this->time.'.htm';
        break;

        case 'query':
        $this->name=$this->dir.'/'.$this->geturlquery().'.htm';
        break;

        case 'namequery':
        $this->name=$this->dir.'/'.$this->geturlname().'-'.$this->geturlquery().'.htm';
        break;

        case 'nametime':
        $this->name=$this->dir.'/'.$this->geturlname().'-'.$this->time.'.htm';
        break;

        }
        return $this->name;
    }

    function createhtml($url='',$time=0,$dirname='',$htmlname='')
    {
        $this->url=$url?$url:$this->url;
        $this->dirname=$dirname?$dirname:$this->dirname;
        $this->time=$time?$time:$this->time;
     
        if(empty($htmlname))
            $this->getname();
        else
            $this->name=$dirname.'/'.$htmlname;

        $content=file($this->url) or die("Failed to open the url ".$this->url." !");;
        $content=join("",$content);
        $fp=@fopen($this->name,"w") or die("Failed to open the file ".$this->name." !");
        if(@fwrite($fp,$content))
        return true;
        else
        return false;
        fclose($fp);
    }

    function deletehtml($url='',$time=0,$dirname='')
    {
        $this->url=$url?$url:$this->url;
        $this->time=$time?$time:$this->time;

        $this->getname();

        if(@unlink($this->name))
        return true;
        else
        return false;
    }

    /**
     * function::deletedir()
     * 删除目录
     * @param $file 目录名(不带/)
     * @return
     */
     function deletedir($file)
     {
        if(file_exists($file))
        {
            if(is_dir($file))
            {
                $handle =opendir($file);
                while(false!==($filename=readdir($handle)))
                {
                    if($filename!="."&&$filename!="..")
                      $this->deletedir($file."/".$filename);
                }
                closedir($handle);
                rmdir($file);
                return true;
            }
            else
            {
                unlink($file);
            }
        }
    }

}

我们来看看用php写的一款编码转换程序代码哦,把gbk,utf-8之间互转等。

function phpUnescape_no($source) {
    $decodedStr = "";
    $pos = 0;
    $len = strlen ($source);
    while ($pos < $len) {
        $charAt = substr ($source, $pos, 1);
        if ($charAt == '%') {
            $pos++;
            $charAt = substr ($source, $pos, 1);
            if ($charAt == 'u') {
                // we got a unicode character
                $pos++;
                $unicodeHexVal = substr ($source, $pos, 4);
                $unicode = hexdec ($unicodeHexVal);
                $entity = "&#". $unicode . ';';
                $decodedStr .= utf8_encode ($entity);
                $pos += 4;
            }
            else {
                // we have an escaped ascii character
                $hexVal = substr ($source, $pos, 2);
                $decodedStr .= chr (hexdec ($hexVal));
                $pos += 2;
            }
        } else {
            $decodedStr .= $charAt;
            $pos++;
        }
    }
    return $decodedStr;
}

 

//////////////////////////////////////////////////////////////////////

function phpUnescape($escstr){
  preg_match_all("/%u[0-9A-Za-z]{4}|%.{2}|*|[0-9a-zA-Z.+-_]+/",$escstr,$matches); //prt($matches);
  $ar = &$matches[0];
  $c = "";
  foreach($ar as $val){
  if (substr($val,0,1)!="%") { //如果是字母数字+-_.的ascii码
      $c .=$val;
  }
  elseif (substr($val,1,1)!="u") { //如果是非字母数字+-_.的ascii码
    $x = hexdec(substr($val,1,2));
      $c .=chr($x);
  }
  else { //如果是大于0xFF的码
    $val = intval(substr($val,2),16);
    if($val < 0x7F){        // 0000-007F
      $c .= chr($val);
    }elseif($val < 0x800) { // 0080-0800
      $c .= chr(0xC0 | ($val / 64));
      $c .= chr(0x80 | ($val % 64));
    }else{                // 0800-FFFF
       $c .= chr(0xE0 | (($val / 64) / 64));
       $c .= chr(0x80 | (($val / 64) % 64));
       $c .= chr(0x80 | ($val % 64));
     }
  }
  }
  return UTFtoGBK($c);
}

function UTFtoGBK($CS){
 $CodeObj = new Chinese("UTF8","GBK");
 return $CodeObj ->Convert($CS);
}


function phpEscape($str){
 $returnStr = "";
 if (@function_exists('mb_convert_encoding')){
  $returnStr = phpEscape_yes($str);
 }
 else{
  $returnStr = phpEscape_no($str);
 }
 return $returnStr;
}

function phpEscape_yes($string, $encoding = 'GBK') {
  $return = '';

  for ($x = 0; $x < mb_strlen($string, $encoding); $x ++) {
    $str = mb_substr($string, $x, 1, $encoding);
    if (strlen($str) > 1) {
      $return .= '%u' . strtoupper(bin2hex(mb_convert_encoding($str, 'UCS-2', $encoding)));
    } else {
      $return .= '%' . strtoupper(bin2hex($str));
    }
  }
  return $return;
}

function phpEscape_no($str){
    preg_match_all("/[x80-xff].|[x01-x7f]+/",$str,$newstr);
    $ar = $newstr[0];
    foreach($ar as $k=>$v){
        if(ord($ar[$k])>=127){
   $tmpString=bin2hex(GBKtoUCS2($v));
            if (!eregi("WIN",PHP_OS)){
                $tmpString = substr($tmpString,2,2).substr($tmpString,0,2);
            }
            $reString.="%u".$tmpString;
        } else {
            $reString.= rawurlencode($v);
        }
    }
    return $reString;
}


function GBKtoUCS2($CS){
 $CodeObj = new Chinese("GBK","UTF8");
 return utf8ToUnicode($CodeObj ->Convert($CS));
}


function utf8ToUnicode($str,$order="big")
{
  $ucs2string ="";
    $n=strlen($str);
    for ($i=0;$i<$n ;$i++ ) {
  $v = $str[$i];
  $ord = ord($v);
  if( $ord<=0x7F){ //  0xxxxxxx 
     if ($order=="little") {
       $ucs2string .= $v.chr(0);
   }
   else {
       $ucs2string .= chr(0).$v;
   }
  }
  elseif ($ord<0xE0 && ord($str[$i+1])>=0x80) {  //110xxxxx 10xxxxxx
   $a = (ord($str[$i]) & 0x3F )<<6;
   $b =  ord($str[$i+1]) & 0x3F ;
   $ucsCode = dechex($a+$b);   //echot($ucsCode);
   $h = intval(substr($ucsCode,0,2),16);
   $l  =  intval(substr($ucsCode,2,2),16);
   if ($order=="little") {
       $ucs2string   .= chr($l).chr($h);
   }
   else {
        $ucs2string   .= chr($h).chr($l);
   }
   $i++;
  }elseif ($ord<0xF0  && ord($str[$i+1])>=0x80  && ord($str[$i+2])>=0x80) { //1110xxxx 10xxxxxx 10xxxxxx
      $a = (ord($str[$i]) & 0x1F)<<12;    
   $b = (ord($str[$i+1]) & 0x3F )<<6;
   $c =  ord($str[$i+2]) & 0x3F ;
   $ucsCode = dechex($a+$b+$c);   //echot($ucsCode);
   $h = intval(substr($ucsCode,0,2),16);
   $l  =  intval(substr($ucsCode,2,2),16);
   if ($order=="little") {
       $ucs2string   .= chr($l).chr($h);
   }
   else {
        $ucs2string   .= chr($h).chr($l);
   }  
   $i +=2;
  }
    }
 return $ucs2string;  
}


////////////////////////////////////////////////////////

function unescapeFuncMake($Txt){
 if ($Txt[2]!="*") return $Txt;
 $ETxt = "";
    $MTxt = "egy+nb@QwXvCWjKPRxVzDl/h7EOMtSa9f6*FpNr81i_0kqdG2LBcuZIAJYo34m-sT%5.UH3SYZ0hzt/y@qDTNECf1BpujiO.X6ks+oIR8GPVg9wbm%xJvKLWrn*F4HAe-QladM27Uc5_";
 $TTxtnum = substr($Txt,0,2);
 $TTxt = substr((substr($MTxt,70).substr($MTxt,70)),$TTxtnum);
 for ($ii=3; $ii<strlen($Txt); $ii++){
  $w = ($ii-3)%10;
  $k = strpos($TTxt,$Txt[$ii],$w)-$w;
  $ETxt .= $MTxt[$k];
 }
 return phpUnescape($ETxt);
}

 

function escapeFuncMake($Txt){
 if ($Txt=="" || $Txt[2]=="*") return $Txt;
 $MTxt = "egy+nb@QwXvCWjKPRxVzDl/h7EOMtSa9f6*FpNr81i_0kqdG2LBcuZIAJYo34m-sT%5.UH3SYZ0hzt/y@qDTNECf1BpujiO.X6ks+oIR8GPVg9wbm%xJvKLWrn*F4HAe-QladM27Uc5_";
 $BTxt = phpEscape($Txt);
 $TTxt = floor(mt_rand(0,50));
 $ETxt = $TTxt.($TTxt>9?"*":"**");
 for ($ii=0; $ii<strlen($BTxt); $ii++){
  $k = strpos($MTxt,$BTxt[$ii])+($ii%10);
  $ETxtstr = substr((substr($MTxt,70).substr($MTxt,70)),$TTxt);
  $ETxt .= $ETxtstr[$k];
 }
 return $ETxt;
}

提供一款检查php表单检证与检查效果代码。

function validate($value,$onoff=0,$type=3,$len=100,$msg='填写错误') {


if(trim($value) != ""){    //如果有内容  

if(!is_int($len))
exit("<script language=javascript>alert('长度参数不是数字');</script>");

preg_match_all("/[xa0-xff]?./",$value,$arr); //中英文混排算字符串长度
$qswhLen_v=count($arr[0]);   
if($qswhLen_v> $len)
        {
            exit("<script language=javascript>alert('".$msg."\n长度错误!');</script>");
 
        }   
      
if ($type==0){  //类型为0的话 检查数据是否为数字
 if(!eregi('^[0-9]+$', $value)){
  exit("<script language=javascript>alert('".$msg."\n必须是数字!');</script>");
        }      
}
else if ($type==1){   //类型为1的话 检查数据是否为字母
 if(!eregi('^[a-zA-Z]+$',$value)){
        exit("<script language=javascript>alert('".$msg."\n必须是字母!');</script>");
        }
}
else if ($type==2){ //类型为2的话 检查数据是否为中文
 if(!eregi("^[".chr(0xa1)."-".chr(0xff)."]+$",$value)){
        exit("<script language=javascript>alert('".$msg."\n必须是中文!');</script>");
        }
}
else if ($type==3){ //类型为3的话 检查数据是否为字母和数字
 if(!eregi('^[0-9a-zA-Z]+$',$value)){
        exit("<script language=javascript>alert('".$msg."\n必须是字母和数字!');</script>");
        }
}
else if ($type==4){ //类型为4的话 email检查
 if(!eregi("^[_.0-9a-zA-Z-]+@([0-9a-zA-Z_-]+.)+[a-zA-Z]$", $value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==5){ //类型为5的话 日期格式检查
 if(!eregi('^[1-2]{1}[0-9]{3}-[0-9]{2}-[0-9]{2}',$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==6){ //类型为6的话 身份证号码格式检查
 if(!preg_match('/(^([d]{15}|[d]{18}|[d]{17}x)$)/',$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==7){ //类型为7的话 电话号码格式检查
 if(!preg_match("/^(((d{3}))|(d{3}-))?((0d{2,3})|0d{2,3}-)?[1-9]d{6,7}$/",$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==8){ //类型为8的话 邮编格式检查
 if(!preg_match("/^[1-9]d{5}$/",$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==9){ //类型为9的话 url地址格式检查
 if(!preg_match("/^http://[A-Za-z0-9]+.[A-Za-z0-9]+[/=?%-&_~`@[]':+!]*([^<>""])*$/",$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==10){ //类型为10的话 无限制

}else{
echo "<script language=javascript>alert('类别错误');</script>";
exit;
}  
       
        }else{
  if($onoff!=0){
echo "<script language=javascript>alert('".$msg."\n请添写".$msg."');</script>";
        exit;
        }
}

}

[!--infotagslink--]

相关文章