生成讯雷地址php代码

 更新时间:2016年11月25日 17:33  点击:2059

根据需求我们写了一款利用php教程来生成迅雷 快车 旋风三种下载软件地址,他们大概都是用到了base64加密程序来实现,代码如下。

<?php
function zhuanhuan() {
$urlodd=explode('//',$_get["url"],2);//把链接分成2段,//前面是第一段,后面的是第二段
$head=strtolower($urlodd[0]);//php对大小写敏感,先统一转换成小写,不然 出现http:或者thunder:这种怪异的写法不好处理
$behind=$urlodd[1];
if($head=="thunder:"){
$url=substr(base64_decode($behind), 2, -2);//base64解密,去掉前面的aa和后面zz
}elseif($head=="flashget:"){
$url1=explode('&',$behind,2);
$url=substr(base64_decode($url1[0]), 10, -10);//base64解密,去掉前面后的[flashget]
}elseif($head=="qqdl:"){
$url=base64_decode($behind);//base64解密
}elseif($head=="http:"||$head=="ftp:"||$head=="mms:"||$head=="rtsp:"||$head=="https教程:"){
$url=$_get["url"];//常规地址仅支持http,https,ftp,mms,rtsp传输协议,其他地貌似很少,像xx网盘实际上也是基于base64,但是有的解密了也下载不了
}else{
echo "本页面暂时不支持此协议";
}
return $url;
}
if($_get["url"]!=null){
$url=zhuanhuan($_get["url"]);
$url_thunder="thunder://".base64_encode("aa".$url."zz");//base64加密,下面的2也一样
$url_flashget="flashget://".base64_encode("[flashget]".$url."[flashget]")."&aiyh";
$url_qqdl="qqdl://".base64_encode($url);
}
?>
<form action=cs.php method=get>
www.111cn.net 请输入普通链接或者迅雷,快车,旋风链地址:
<input type=text name="url" size="80">
<input type=submit value="转换">
</form>
<p>实际地址:<a href="<?php echo $url;?>" target="_blank"><?php echo $url;?></a>
<p>迅雷链:<a href="<?php echo $url_thunder;?>" target="_blank"><?php echo $url_thunder;?></a>
<p>快车链:<a href="<?php echo $url_flashget;?>" target="_blank"><?php echo $url_flashget;?></a>
<p>旋风链:<a href="<?php echo $url_qqdl;?>" target="_blank"><?php echo $url_qqdl;?></a>

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 php教程,您能够创建并取回 cookie 的值。
如何创建 cookie?
setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 <html> 标签之前。

语法
setcookie(name, value, expire, path, domain);


$content_id = array();//1.创建一个数组
$content_id[] = $_get['contentid']; //2.对接受到的id插入到数组中去

if(isset($_cookie['content_id'])) //3.判定cookie是否存在,第一次不存在(如果存在的话)
{
$now_content = str_replace("", "", $_cookie['content_id']);//(4).您可以查看下cookie,此时如果unserialize的话出问题的,我把里面的斜杠去掉了
$now = unserialize($now_content); //(5).把cookie 中的serialize生成的字符串反实例化成数组
foreach($now as $n=>$w) { //(6).里面很多元素,所以我要foreach 出值
if(!in_array($w,$content_id)) //(7).判定这个值是否存在,如果存在的化我就不插入到数组里面去;
{
$content_id[] = $w; //(8).插入到数组
}
}
$content= serialize($content_id); //(9).把数组实例化成字符串
setcookie("content_id",$content, time()+3600*24); //(10).插入到cookie

}else {
$content= serialize($content_id);//4.把数组实例化成字符串
setcookie("content_id",$content, time()+3600*24); //5.生成cookie
}

$getcontent = unserialize(str_replace("", "", $_cookie['content_id']));
/*foreach($getcontent as $row=>$r)
{
echo $r;//(取值)
}*/

办法是利用矩阵,汉字的组成方式是两个ascii字符,一个高位码,一个低位码,界限分别是128-264 64-128
每个汉字拼音最长为8个字符,由此组成二维矩阵进行查询,弊端是无法解决多音字问题

class pinyin{

/*
是否将拼音文件读取到内存内,损耗少许内存,几百kb的样子,速度可以略有提升,
*/
var $ismemorycache = 1;

/*
是否只获取首字母
*/
var $isfrist = 1;

/*
拼音矩阵文件地址
*/
var $path = "py.qdb";

/*
内存拼音矩阵
*/
var $memorycache;

/*
拼音文件句柄
*/
var $handle;

/*
转换发生错误盒子
*/
var $errormsgbox;

/*
转换结果
*/
var $result;


var $array = array();
var $n_t = array("ā" => "a","á" => "a","ǎ" => "a","à" => "a","ɑ" => "a",
"ō" => "o","ó" => "o","ǒ" => "o","ò" => "o",
"ē" => "e","é" => "e","ě" => "e","è" => "e","ê" => "e",
"ī" => "i","í" => "i","ǐ" => "i","ì" => "i",
"ū" => "u","ú" => "u","ǔ" => "u","ù" => "u",
"ǖ" => "v","ǘ" => "v","ǚ" => "v","ǜ" => "v","ü" => "v"
);

/*
转换入口
@params $str 所需转换字符,$istonemark 是否保留音标 $suffix 尾缀,默认为空格
*/
function chinesetopinyin($str,$istonemark = 0,$suffix = ""){
$this->py($str,$istonemark,$suffix);
return $this -> result;
}

function get(){
return $this -> result;
}


function py($str,$n = 0,$s = ""){
$strlength = strlen($str);
if($strlength == 0){ return ""; }
$this->result = "";
if(is_array($str)){
foreach($str as $key => $val){
$str[$key] = $this->py($val,$n,$s);
}
return;
}

if(empty($this->handle)){
if(!file_exists($this->path)){
$this->addoneerrormsg(1,"拼音文件路径不存在");
return false;

}

if(is_array($str)){
foreach($str as $key => $val){
$str[$key] = $this->py($val,$n,$s);
}
}


if($this -> ismemorycache){
if(!$this->memorycache){
$this->memorycache = file_get_contents($this->path);
for($i = 0 ; $i < $strlength ; $i++){
$ord1 = ord(substr($str,$i,1));
if($ord1 > 128){
$ord2 = ord(substr($str, ++$i, 1));
if(!isset($this->array[$ord1][$ord2])){
$leng = ($ord1 - 129) * ((254 - 63) * 8 + 2) + ($ord2 - 64) * 8;
$this->array[$ord1][$ord2] = trim(substr($this->memorycache,$leng,8));
}
$strtrlen = $this->isfrist ? 1 : 8;
$this->result .= substr($this ->array[$ord1][$ord2],0,$strtrlen).$s;
}else{
$this->result .= substr($str,$i,1);
}

}
}
}else{
$this->handle = fopen($this->path,"r");
for($i = 0 ; $i < $strlength ; $i++){
$ord1 = ord(substr($str,$i,1));
if($ord1 > 128){
$ord2 = ord(substr($str, ++$i, 1));
if(!isset($this->array[$ord1][$ord2])){
$leng = ($ord1 - 129) * ((254 - 63) * 8 + 2) + ($ord2 - 64) * 8;
fseek($this -> handle,$leng);
$this->array[$ord1][$ord2] = trim(fgets($this->handle,8));

}
$strtrlen = $this->isfrist ? 1 : 8;

$this->result .= substr($this ->array[$ord1][$ord2],0,$strtrlen).$s;
}else{ $this->result .= substr($str,$i,1); }

}
}

if(!$n){ $this -> result = strtr($this -> result,$this -> n_t);}
}
}
function addoneerrormsg($no,$reason){

$this->errormsgbox[] = "<b>error:</b>" . $no . "," . $reason;
}

function showerrormsg(){

foreach($this->errormsgbox as $val){
echo $val."rnrn</br></br>";
}
}

function __destruct(){
if(is_array($this->errormsgbox)){
$this->showerrormsg();
}
}

}

之前遇见过这个难题,发现流传的代码都不怎么完善,汉字库总共有20k+的汉字,大多数的是拿几百个常用汉字打算糊弄过去,在火星文流传的今天,是不行的。
还有种读取词典然后转换的,每行一个汉字|拼音,这种弊端非常大,速度慢,耗费巨大内存,仅仅explode一下读入数组,再循环一次,就能耗费上百m的内存,如果一个单页面耗费上百m,负载稍微大点只能泪奔了。

php教程 preg_match_all正则匹配字符串所有连接地址
*/

$str ='<a href="http://www.a.com/2010/11-15/5.html">4</a>
  <a href="http://www.b.com/2010/11-15/6.html">5</a>
  <a href="http://www.b.com/2010/11-15/1.html">6</a>


  ';

$ymd=date("y")."/".date("m-d");
$b = preg_match_all('/<a href="(.*?)com/'.$ymd.'(.*?)html">(.*?)</a>/',$a,$c,preg_set_order);

/*

int preg_match_all ( string $pattern , string $subject , array &$matches [, int $flags [, int $offset ]] );搜索所有匹配正则表达式的模式并提出给予他们在比赛中受的标志指定的顺序。第一场比赛后发现,随后的搜查是继续从最后一场比赛结束。


更多详细内容请查看:http://www.111cn.net/phper/php-cy/33670.htm

在这里中我们介绍了php教程命名空间的用途和namespace关键字,在这篇文章中我们将介绍一下use命令的使用以及php如何解析命名空间的名字的。

namespace bakbaba;
function bab(){
    echo "bi";
}
namespace kkk;
function k1(){
    echo "k1";
}


bakbababab();//在kkk的命名空间下使用别的命名空间,注意前面的
use bakbaba as b;//依旧在kkk的命名空间下,但是用别名的的时候以下方法也正确
#use bakbaba as b;//前面可以不使用号
bbab();//使用别名下命名空间的时候前面不该有号
k1();//调用该函数没有报错,说明use不影响当前当前命名空间

 

< ?php  
// application library 1  
namespace applib1;  
const myconst = 'applib1myconst';  
function myfunction() {  
 return __function__;  
}  
class myclass {  
 static function whoami() {  
eturn __method__;  
 }  
}  
?>
 


lib2.php
< ?php  
// application library 2  
namespace applib2;  
 
const myconst = 'applib2myconst';  
 
function myfunction() {  
 return __function__;  
}  
 
class myclass {  
 static function whoami() {  
eturn __method__;  
 }  
}  
?> 

幸好在手册中发现这么一段代码,故手册中其他关于namespace的内容,就可以忽略了,直接看下面的代码

 

<?php
namespace a;
use bd, ce as f;

// 函数调用

foo();      // 首先尝试调用定义在命名空间"a"中的函数foo()
            // 再尝试调用全局函数 "foo"

foo();     // 调用全局空间函数 "foo"

myfoo();   // 调用定义在命名空间"amy"中函数 "foo"

f();        // 首先尝试调用定义在命名空间"a"中的函数 "f"
            // 再尝试调用全局函数 "f"

// 类引用

new b();    // 创建命名空间 "a" 中定义的类 "b" 的一个对象
            // 如果未找到,则尝试自动装载类 "ab"

new d();    // 使用导入规则,创建命名空间 "b" 中定义的类 "d" 的一个对象
            // 如果未找到,则尝试自动装载类 "bd"

new f();    // 使用导入规则,创建命名空间 "c" 中定义的类 "e" 的一个对象
            // 如果未找到,则尝试自动装载类 "ce"

new b();   // 创建定义在全局空间中的类 "b" 的一个对象
            // 如果未发现,则尝试自动装载类 "b"

new d();   // 创建定义在全局空间中的类 "d" 的一个对象
            // 如果未发现,则尝试自动装载类 "d"

new f();   // 创建定义在全局空间中的类 "f" 的一个对象
            // 如果未发现,则尝试自动装载类 "f"

// 调用另一个命名空间中的静态方法或命名空间函数

bfoo();    // 调用命名空间 "ab" 中函数 "foo"

b::foo();   // 调用命名空间 "a" 中定义的类 "b" 的 "foo" 方法
            // 如果未找到类 "ab" ,则尝试自动装载类 "ab"

d::foo();   // 使用导入规则,调用命名空间 "b" 中定义的类 "d" 的 "foo" 方法
            // 如果类 "bd" 未找到,则尝试自动装载类 "bd"

bfoo();   // 调用命名空间 "b" 中的函数 "foo"

b::foo();  // 调用全局空间中的类 "b" 的 "foo" 方法
            // 如果类 "b" 未找到,则尝试自动装载类 "b"

// 当前命名空间中的静态方法或函数

ab::foo();   // 调用命名空间 "aa" 中定义的类 "b" 的 "foo" 方法
              // 如果类 "aab" 未找到,则尝试自动装载类 "aab"

ab::foo();  // 调用命名空间 "ab" 中定义的类 "b" 的 "foo" 方法
              // 如果类 "ab" 未找到,则尝试自动装载类 "ab"
?>

[!--infotagslink--]

相关文章

  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • 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
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • php导出csv格式数据并将数字转换成文本的思路以及代码分享

    php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • 几种延迟加载JS代码的方法加快网页的访问速度

    本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13