php 友情链接批量查询工具下载

 更新时间:2016年11月25日 16:30  点击:1999
友情连接是站长们常用的东西哦,如果一个网连接太多,要一个个检查多麻烦了,为了方便我们提供了php 友情链接,批量查询程序,只要输入友情连接就可以进行查询哦。

<?php
$max_allow_links = 100; // 最大许可检查的链接数目

// 此函数转载于www.lian123.com,特别鸣谢
function my_file_get_contents($url, $timeout=30) {
 if ( function_exists('curl_init') ) {
  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_URL, $url);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  $file_contents = curl_exec($ch);
  curl_close($ch);
 } else if ( ini_get('allow_url_fopen') == 1 || strtolower(ini_get('allow_url_fopen')) == 'on' ) {
  $file_contents = @file_get_contents($url);
 } else {
  $file_contents = '';
 }
 return $file_contents;
}

// 开始检查
if( isset($_GET['mod']) && $_GET['mod'] == 'check_now' && isset($_GET['id']) && isset($_GET['my_url']) && isset($_GET['url']) && isset($_GET['auto_check']) ){
 $js_id = 'parent.document.getElementById("s_' . $_GET['id'] . '").innerHTML';
 if( strstr($_GET['url'],$_GET['my_url']) ) {
   echo '<script>' . $js_id . ' = "内部链接";</script>';

 } else if( !stristr($_GET['url'],'http://') ) {
   echo '<script>' . $js_id . ' = "错误链接";</script>';
 } else {
  $s = my_file_get_contents($_GET['url']);

  if( trim($s) == '' ){
   echo '<script>' . $js_id . ' = "抓取内容失败";</script>';
  } else  if( stristr($s,$_GET['my_url']) ){
   echo '<script>' . $js_id . ' = "<font color=green>包含链接,检查通过</font>";</script>';
  } else {
   echo '<script>' . $js_id . ' = "<font color=red>没有找到链接,请核查</font>";</script>';
  }
 }

 if($_GET['auto_check']==1){
  echo '<script>parent.checkLink(' . ($_GET['id']+1) . ');</script>';
 }

 exit('<br />done!');
 
}
?>
<!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>
  <title>《做网站》友情链接自动检查程序</title>
  <meta name="generator" content="editplus" />
  <meta name="author" content="www.zuowangzhang.com.cn" />
 
  <meta name="description" content="我们很BS这样的人,当时双方都交换了首页链接,但对方却随意取消和您交换的友情链接(即对方去掉您网站的链接,而您却还保留了它的链接)有了本程序,您可以快速、自动的检查您的友情链接网址,查看对方的网站是否去掉了您的链接。" />
 <style>
body,td{font-size:9pt;font-family:arial;}
a:link,a:visited{color:blue;}
a:hover{color:red;}

A.black:link,A.black:visited{color:black;text-decoration: none;}

.main_tb {width:580px;}
.main_tb .tb_title {background-color: #CCFFFF;}
.main_tb .tr_title {background-color: #A6D9D2;height:40px;}

</style>
<base target=_blank></base>
 </head>

 <body>
<iframe src="about:blank" width=0  height=0 name="hidden_iframe" id="hidden_iframe"></iframe>

<script type="text/javascript">
<!--
my_url = '';
checking_str = "正在检查...";
check_time_out = 25000;
auto_check = 0;


function checkZuoWangZhang() {
 var all_code = window.frames["zuoWangZhang.com.cn"].document.body.innerHTML;
 if(all_code.indexOf('http://') ==-1){
  alert("请直接将您网站的文字和图片链接复制Ctrl+c,粘贴Ctrl+v进来 ");
  return false;
 }
 if(f.my_url.value.indexOf('.') ==-1){
  alert("请输入您的网站首页地址");
  return false;
 }

 if(f.my_url.value.indexOf('http://') ==-1){
  f.my_url.value = 'http://' + f.my_url.value;
 }

 if( f.my_url.value.substr(f.my_url.value.length-1,1) == '/' ) {
  f.my_url.value = f.my_url.value.substr(0,f.my_url.value.length-1);
 }

 f.html_code.value = all_code;
 return true;
}

function checkTimeout(id) {
 if(document.getElementById('s_'+id).innerHTML!=checking_str){
  return false;
 }
 document.getElementById('s_'+id).innerHTML = "可能超时,<a href='#' onclick='return checkLink("+id+");'>重新检查</a>";

 if(auto_check==1){
  checkLink((id+1));
 }
 return true;
}

function checkLink(id) {
 if(document.getElementById('s_'+id)==null){
  auto_check = 0;
  return false;
 }
 if( auto_check==1 && document.getElementById('s_'+id).innerHTML.indexOf('超时')!=-1 ){
  alert("请等自动检查全部结束以后,再进行操作!");
  return false;
 }
 document.getElementById('hidden_iframe').src = 'check_links.php?mod=check_now&url=' + escape(document.getElementById('u_'+id).href) + '&id=' + id + '&my_url='+ escape(my_url) + '&auto_check=' + auto_check + '';

 document.getElementById('s_'+id).innerHTML = checking_str;

 setTimeout("checkTimeout("+id+")",check_time_out);

 return false;
}

function autoCheckLink(id) {
 checkLink(id);
 //setTimeout("checkLink("+(id+1)+")",(check_time_out+1000));
}
//-->
</script>

 

<center>
<h4>友情链接自动检查程序</h4>
我们很BS这样的人,当时双方都交换了首页链接,但对方却随意取消和您交换的友情链接(即对方去掉您网站的链接,而您却还保留了它的链接)
<br />&nbsp;<br />
有了本程序,您可以快速、自动的检查您的友情链接网址,查看对方的网站是否去掉了您的链接。

<br />

<?php

// 显示获取到的链接地址
if( isset($_POST['html_code']) && isset($_POST['my_url']) ){
 
 preg_match_all("/<a[strn]{1,}[^<]{0,}href=["']{0,}(https?://.*)[strn"'>]{1,}/isU",stripslashes($_POST['html_code']),$ary);

 if( isset($ary[1]) && count($ary[1])>0 ){
  echo '<table bordercolordark="#ffffff" align="center" bordercolorlight="#000000" border="1"  cellspacing="0" cellpadding="4" class=main_tb><tr><td colspan=10 class=tb_title> <font size="4" ><b>开始检查</b></font>
  <br />
   检查下列网址是否包含有 <font color=green>' . $_POST['my_url'] . '</font> 的链接
  </td></tr>
  <tr class=tr_title>
   <td>序号</td>
   <td align=left>被检查的网址</td>
   <td >检查结果</td>
   </tr>
  ';
  for($i=0; $i<count($ary[1]); $i++){
   
   $check_str = ($_POST['auto_check']==0) ? '<a href="#" onclick="return checkLink(' . $i . ');">开始检查</a>' : '<font color=gray>等待中...</font>';

   echo '<tr>
   <td>' . ($i+1) . '.</td>
   <td align=left><a href="' . $ary[1][$i] . '" id=u_' . $i . '  target=_blank>' . $ary[1][$i] . '</a></td>
   <td id=s_' . $i . '>' . $check_str . '</td>
   </tr>';

   if($i>$max_allow_links){
    break;
   }
  }
  echo '</table>';
 }
 echo '<script>my_url="' . trim($_POST['my_url']) . '";auto_check=' . (int)$_POST['auto_check'] . ';</script>';

 if( $_POST['auto_check']==1 ){
  echo '<script>autoCheckLink(0);</script>';
 }
 
}

?>
 

<form method="post" action="check_links.php" name="formZuoWangZhang" target=_top>

必须包含地址(自己网站首页):<input type="text" name="my_url" size=50 value="<?php if(isset($_POST['my_url'])){echo $_POST['my_url'];}?>" />
<br />
自动或手工检查:<select name="auto_check"><option value=1>自动</option><option value=0>手工</option></select>
<br />&nbsp;<br />
要检查的网站(下面是可视化输入框,请直接将文字链接和图片链接复制,粘贴 到下面即可):<br />
<iframe id="zuoWangZhang.com.cn" name="zuoWangZhang.com.cn" height="150" width="600" style="padding:0px;"></iframe>
<script>window.frames["zuoWangZhang.com.cn"].document.designMode="On";</script>

 

<br />&nbsp;<br />
<input type="hidden" name="html_code" />

 

<table width=600>
 <tr>
  <td width=100 align=center>&nbsp;</td>
  <td width=400 align=center><input type="submit" onclick="return checkZuoWangZhang();" value="  开始检查  " /></td>
  <td width=100 align=right><a href=# onclick="return setTestLinks(this);">载入测试数据</a>
</td>
 </tr>
</table>
 
<br />&nbsp;<br />

如果您不知道怎么开始,请点击 <a href=# onclick="return setTestLinks(this);">载入测试数据</a>,然后点击 <input type="submit" onclick="return checkZuoWangZhang();" value="开始检查" style="height:19px;" /> 查看演示

<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />

<!-- 欢迎转载,但请保留下面的文字和链接,修改链接会被BS,谢谢合作 -->

本程序由《<A HREF="http://www.ZuoWangZhanG.com.cn/" class=black>做网站</a>》原创,完全开源!<a href="http://www.zuowangzhang.com.cn/download/check_links.zip">下载</a>
<br />&nbsp;<br />欢迎各位转载,但请保留<A HREF="http://www.ZuoWangZhang.com.cn/ZuoWangZhan/RuHeZuoWangZhan/"  class=black>如何做网站</a>的文字,谢谢!

<br />&nbsp;<br />

欢迎您 <a href="http://www.zuowangzhang.com.cn/hbcms/user/add_msg.php?to_user_id=1&to_user_name=网站管理员" target=_blank>给作者提出反馈意见</a>,我会不断的改善它,推出更好用的版本。

</form>
<script type="text/javascript">
f = document.formZuoWangZhang;
</script>


</center>

<?php
if(isset($_POST['html_code'])){
 echo '
 <div id=old_links style="display:none;">
 ' . stripslashes($_POST['html_code']) . '
 </div>
 <script type="text/javascript">

 function setOldLinks() {

  window.frames["zuoWangZhang.com.cn"].document.body.innerHTML = document.getElementById("old_links").innerHTML;
  document.getElementById("old_links").innerHTML = "";
 }
 setTimeout("setOldLinks()",3000);

 </script>';
 
}
 
?>


<p>&nbsp;</p>

 

 

 

 

 


<span id=test_links>

<TABLE align=center  cellpadding='1' cellspacing='0' style="font-size:9pt;">
<TR >
 <TD colspan="6">
我的友情连接:
</td><TD colspan=2>
<div align=right>
</td></tr><tr>
<!-- 文字链接 -->
 <td>
 <A HREF="http://www.hao123.com/">Hao123
 </td>
   <td>
 <A HREF="http://www.265.com/">265
 </td>
   <td>
 <A HREF="http://site.baidu.com/">百度网址
 </td>
   <td>
 <A HREF="http://www.zuoWANGZHANG.com.cn/">建网站</a>
 </td>
   <td>
 <a class="l" href="http://site.yahoo.com.cn/" target="_blank">雅虎网址</a>
 
 </td>
   <td>
 <A HREF="http://www.baidu.com/">baidu
 </td>

   <td>
<a  href="http://daohang.google.cn/" target="_blank">Google导航</a>
 </td>  
  </tr>

<!-- 图片链接 -->
<tr>

 
   <td>
 <A HREF="http://www.lian123.com/"><img src="http://cn.yimg.com/sp/yahoohp060323/logo_yahoo.gif" width=88 height=31 border=0  ></A>
 </td>
   <td>
 <A HREF="http://www.yisou.com/"><img src="http://static.php.net/www.php.net/images/logos/php-power-white.gif" width=88 height=31 border=0 ></A>
 </td>
   <td>
 <A HREF="http://www.google.cn/"><img src="http://www.mysql.com/common/logos/mysql_100x52-64.gif" width=88 height=31 border=0  ></A>
 </td>
 <td>
 
   <td>
 <A HREF="http://www.jipiaojiage.cn/"><img src="http://image2.sina.com.cn/home/images/sina_logo2.gif" width=88 height=31 border=0  ></A>
 </td>
   <td>
 <A HREF="http://www.google.com/"><img src="http://www.google.com/logos/lunarnewyear03.gif" width=88 height=31 border=0 alt="谷歌Google"></A>
 </td>
  <td>
 <a class="l"   href="http://123.sogou.com/" target="_blank">搜狗网址</a>
 </td>
  </tr>
  <tr><td colspan=10>
其他测试链接:
<a href="http://www.163.com/">163内部链接测试</a>
  </td></tr>
</TABLE>

 

</span>


<script type="text/javascript">
<!--

document.write('<sty'+'le>#te'+'st_li'+'nks {disp'+'lay:no'+'ne;}</sty'+'le>');
function setTestLinks(t) {
 window.frames["zuoWangZhang.com.cn"].document.body.innerHTML = document.getElementById('test_links').innerHTML;

 document.getElementById('test_links').innerHTML = '';

 f.my_url.value = 'http://www.163.com/';
 return false;
}

 
 
 
//-->
</script>

 

 


</body>
</html>

下面来看看我提供的一款php goolge pr查询程序代码哦,好了费话不说多了来看看吧。

//下面的函数用于查pr
function zeroFill($a, $b)
{
 $z = hexdec(80000000);
 if ($z & $a)
 {
  $a = ($a>>1);
  $a &= (~$z);
  $a |= 0x40000000;
  $a = ($a>>($b-1));
 }
 else
 {
  $a = ($a>>$b);
 }
 return $a;
}

function mix($a,$b,$c)
{
 $a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
 $b -= $c; $b -= $a; $b ^= ($a<<8);
 $c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
 $a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
 $b -= $c; $b -= $a; $b ^= ($a<<16);
 $c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
 $a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
 $b -= $c; $b -= $a; $b ^= ($a<<10);
 $c -= $a; $c -= $b; $c ^= (zeroFill($b,15));
 return array($a,$b,$c);
}

function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC)
{
 if(is_null($length))
 {
  $length = sizeof($url);
 }
 $a = $b = 0x9E3779B9;
 $c = $init;
 $k = 0;
 $len = $length;
 while($len >= 12)
 {
  $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
  $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
  $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
  $mix = mix($a,$b,$c);
  $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
  $k += 12;
  $len -= 12;
 }
 $c += $length;
 switch($len)
 {
  case 11: $c+=($url[$k+10]<<24);
  case 10: $c+=($url[$k+9]<<16);
  case 9 : $c+=($url[$k+8]<<8);
  case 8 : $b+=($url[$k+7]<<24);
  case 7 : $b+=($url[$k+6]<<16);
  case 6 : $b+=($url[$k+5]<<8);
  case 5 : $b+=($url[$k+4]);
  case 4 : $a+=($url[$k+3]<<24);
  case 3 : $a+=($url[$k+2]<<16);
  case 2 : $a+=($url[$k+1]<<8);
  case 1 : $a+=($url[$k+0]);
 }
 $mix = mix($a,$b,$c);
 return $mix[2];
}

function strord($string) {
 for($i=0;$i<strlen($string);$i++) {
 $result[$i] = ord($string{$i});
 }
 return $result;
}

function ReadPR($link)
{
 $fp = fsockopen ("www.google.com", 80, $errno, $errstr, 30);
 if (!$fp)
 {
  echo "$errstr ($errno)n";
  exit(1);
 }
 else
 {
  $out = "GET $link HTTP/1.0rn";
  $out .= "Host: toolbarqueries.google.comrn";
  $out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114.9-big; Linux 2.6)rn";
  $out .= "Connection: Closernrn";
  fwrite($fp, $out);
  do{
  $line = fgets($fp, 128);
  }while ($line !== "rn");
  $data = fread($fp,8192);
  fclose ($fp);
  return $data;
 }
}

function GetPR($url)
{
 $url ='info:'.$url;
 $ch = GoogleCH(strord($url));
 $data = ReadPR("/search?client=navclient-auto&ch=6$ch&features=Rank&q=$url");
 $rankarray = explode (':', $data);
 if(trim($rankarray[2])!=""){
  return $rankarray[2];
 }
 else
  return "0";
}

我们下面的一段代码是根据IP来判决用户所以城市哦,php 判断IP所在地源码完全公开的呼

function convertIp($ip) {
 $return = '';
 if(preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip)) {
  $iparray = explode('.', $ip);
  if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) {
   $return = '- LAN';
  } elseif ($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {
   $return = '- Invalid IP Address';
  } else {
   $ipfile = MOOPHP_ROOT.'/plugins/ipdata/wry.dat';
   if(!@file_exists($ipfile)) {
    $return = convertIpFull($ip, $ipfile);
   }
  }
 }
 return $return;
}

function convertIpFull($ip, $ipdatafile) {

 if(!$fd = @fopen($ipdatafile)) {
  return '- Invalid IP data file';
 }

 $ip = explode('.', $ip);
 $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];

 if(!($DataBegin = fread($fd, 4)) || !($DataEnd = fread($fd, 4)) ) return;
 @$ipbegin = implode('', unpack('L', $DataBegin));
 if($ipbegin < 0) $ipbegin += pow(2, 32);
 @$ipend = implode('', unpack('L', $DataEnd));
 if($ipend < 0) $ipend += pow(2, 32);
 $ipAllNum = ($ipend - $ipbegin) / 7 + 1;

 $BeginNum = $ip2num = $ip1num = 0;
 $ipAddr1 = $ipAddr2 = '';
 $EndNum = $ipAllNum;

 while($ip1num > $ipNum || $ip2num < $ipNum) {
  $Middle= intval(($EndNum + $BeginNum) / 2);

  fseek($fd, $ipbegin + 7 * $Middle);
  $ipData1 = fread($fd, 4);
  if(strlen($ipData1) < 4) {
   fclose($fd);
   return '- System Error';
  }
  $ip1num = implode('', unpack('L', $ipData1));
  if($ip1num < 0) $ip1num += pow(2, 32);

  if($ip1num > $ipNum) {
   $EndNum = $Middle;
   continue;
  }

  $DataSeek = fread($fd, 3);
  if(strlen($DataSeek) < 3) {
   fclose($fd);
   return '- System Error';
  }
  $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
  fseek($fd, $DataSeek);
  $ipData2 = fread($fd, 4);
  if(strlen($ipData2) < 4) {
   fclose($fd);
   return '- System Error';
  }
  $ip2num = implode('', unpack('L', $ipData2));
  if($ip2num < 0) $ip2num += pow(2, 32);

  if($ip2num < $ipNum) {
   if($Middle == $BeginNum) {
    fclose($fd);
    return '- Unknown';
   }
   $BeginNum = $Middle;
  }
 }

 $ipFlag = fread($fd, 1);
 if($ipFlag == chr(1)) {
  $ipSeek = fread($fd, 3);
  if(strlen($ipSeek) < 3) {
   fclose($fd);
   return '- System Error';
  }
  $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
  fseek($fd, $ipSeek);
  $ipFlag = fread($fd, 1);
 }

 if($ipFlag == chr(2)) {
  $AddrSeek = fread($fd, 3);
  if(strlen($AddrSeek) < 3) {
   fclose($fd);
   return '- System Error';
  }
  $ipFlag = fread($fd, 1);
  if($ipFlag == chr(2)) {
   $AddrSeek2 = fread($fd, 3);
   if(strlen($AddrSeek2) < 3) {
    fclose($fd);
    return '- System Error';
   }
   $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
   fseek($fd, $AddrSeek2);
  } else {
   fseek($fd, -1, SEEK_CUR);
  }

  while(($char = fread($fd, 1)) != chr(0))
  $ipAddr2 .= $char;

  $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
  fseek($fd, $AddrSeek);

  while(($char = fread($fd, 1)) != chr(0))
  $ipAddr1 .= $char;
 } else {
  fseek($fd, -1, SEEK_CUR);
  while(($char = fread($fd, 1)) != chr(0))
  $ipAddr1 .= $char;

  $ipFlag = fread($fd, 1);
  if($ipFlag == chr(2)) {
   $AddrSeek2 = fread($fd, 3);
   if(strlen($AddrSeek2) < 3) {
    fclose($fd);
    return '- System Error';
   }
   $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
   fseek($fd, $AddrSeek2);
  } else {
   fseek($fd, -1, SEEK_CUR);
  }
  while(($char = fread($fd, 1)) != chr(0))
  $ipAddr2 .= $char;
 }
 fclose($fd);

 if(preg_match('/http/i', $ipAddr2)) {
  $ipAddr2 = '';
 }
 $ipaddr = "$ipAddr1 $ipAddr2";
 $ipaddr = preg_replace('/CZ88.NET/is', '', $ipaddr);
 $ipaddr = preg_replace('/^s*/is', '', $ipaddr);
 $ipaddr = preg_replace('/s*$/is', '', $ipaddr);
 if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
  $ipaddr = '- Unknown';
 }

 return '- '.$ipaddr;

}

很多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 调用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发送过来结果。

[!--infotagslink--]

相关文章

  • Mybatis Plus select 实现只查询部分字段

    这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-06-27
  • Oracle使用like查询时对下划线的处理方法

    这篇文章主要介绍了Oracle使用like查询时对下划线的处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-16
  • jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果

    本文实例讲述了jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果。分享给大家供大家参考,具体如下:这里演示jQuery实现鼠标移动到链接上,滑动展开/隐藏图片效果,鼠标放在“上一页”“下一页”上,立即浮现出所对应的图...2015-10-30
  • 解决mybatis-plus 查询耗时慢的问题

    这篇文章主要介绍了解决mybatis-plus 查询耗时慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-04
  • MySQL中在查询结果集中得到记录行号的方法

    如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数。 Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的 ROWNUM ; MS SQL...2015-03-15
  • Node实现搜索框进行模糊查询

    这篇文章主要为大家详细介绍了Node实现搜索框进行模糊查询,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-06-28
  • Mybatis用注解写in查询的实现

    这篇文章主要介绍了Mybatis用注解写in查询的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-13
  • PHP+Mysql+jQuery查询和列表框选择操作实例讲解

    本文讲解如何通过ajax查询mysql数据,并将返回的数据显示在待选列表中,再通过选择最终将选项加入到已选区,可以用在许多后台管理系统中。本文列表框的操作依赖jquery插件。HTML <form id="sel_form" action="post.php" me...2015-10-23
  • Element-ui 自带的两种远程搜索(模糊查询)用法讲解

    这篇文章主要介绍了Element-ui 自带的两种远程搜索(模糊查询)用法讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-29
  • Mybatis和Mybatis-Plus时间范围查询方式

    这篇文章主要介绍了Mybatis和Mybatis-Plus时间范围查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-06
  • 如何获取百度搜索结果页中解密之后的真实链接

    大家用百度搜索的时候,可能会发现,结果链接用的还是百度的链接,点击之后才会跳转到另外一个页面,另外一个页面的真实链接如何获取到呢?? 通过分析发现: 可以看出,返回...2016-05-19
  • mysql like查询字符串示例语句

    MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式 一、SQL模式SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL...2013-10-04
  • Select下拉框模糊查询功能实现代码

    这篇文章主要介绍了Select下拉框模糊查询功能实现代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-07-29
  • JPA如何使用nativequery多表关联查询返回自定义实体类

    这篇文章主要介绍了JPA如何使用nativequery多表关联查询返回自定义实体类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-11-18
  • C#百万数据查询出现超时问题的解决方法

    这篇文章主要介绍了C#百万数据查询出现超时问题的解决方法,是非常实用的技巧,需要的朋友可以参考下...2020-06-25
  • postgresql的jsonb数据查询和修改的方法

    这篇文章主要介绍了postgresql的jsonb数据查询和修改的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-03
  • Mybatis-Plus根据时间段去查询数据的实现示例

    这篇文章主要介绍了Mybatis-Plus根据时间段去查询数据的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-18
  • postgresql数据库连接数和状态查询操作

    这篇文章主要介绍了postgresql数据库连接数和状态查询操作,具有很好的参考价值,对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • rails常用数据库查询操作、方法浅析

    这篇文章主要介绍了rails常用数据库查询操作、方法浅析,总结的比较全,WEB开发种常用的数据库操作都列出了rails对应代码,需要的朋友可以参考下...2020-06-30