导航:首页 > 源码编译 > php短网址算法

php短网址算法

发布时间:2022-06-15 04:57:40

php短址源码修改

public static function compressInt($int) {
srand(microtime() * 100000);
$base = "";
$len = 62;
for($i=0;$i<$int;$i++){
$a=rand(0,$len);
$b.=substr($base,$a,1);
}
return $b;
}

❷ php现在有哪些常用的算法

<?
//--------------------
// 基本数据结构算法
//--------------------
//二分查找(数组里查找某个元素)
function bin_sch($array, $low, $high, $k){
if ( $low <= $high){
$mid = intval(($low+$high)/2 );
if ($array[$mid] == $k){
return $mid;
}elseif ( $k < $array[$mid]){
return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+ 1, $high, $k);
}
}
return -1;
}
//顺序查找(数组里查找某个元素)
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; $i<$n; $i++){
if( $array[$i]==$k){
break;
}
}
if ($i<$n){
return $i;
}else{
return -1;
}
}
//线性表的删除(数组中实现)
function delete_array_element($array , $i)
{
$len = count($array);
for ($j= $i; $j<$len; $j ++){
$array[$j] = $array [$j+1];
}
array_pop ($array);
return $array ;
}
//冒泡排序(数组排序)
function bubble_sort( $array)
{
$count = count( $array);
if ($count <= 0 ) return false;
for($i=0 ; $i<$count; $i ++){
for($j=$count-1 ; $j>$i; $j--){
if ($array[$j] < $array [$j-1]){
$tmp = $array[$j];
$array[$j] = $array[ $j-1];
$array [$j-1] = $tmp;
}
}
}
return $array;
}
//快速排序(数组排序)
function quick_sort($array ) {
if (count($array) <= 1) return $array;
$key = $array [0];
$left_arr = array();
$right_arr = array();
for ($i= 1; $i<count($array ); $i++){
if ($array[ $i] <= $key)
$left_arr [] = $array[$i];
else
$right_arr[] = $array[$i ];
}
$left_arr = quick_sort($left_arr );
$right_arr = quick_sort( $right_arr);
return array_merge($left_arr , array($key), $right_arr);
}

//------------------------
// PHP内置字符串函数实现
//------------------------
//字符串长度
function strlen ($str)
{
if ($str == '' ) return 0;
$count = 0;
while (1){
if ( $str[$count] != NULL){
$count++;
continue;
}else{
break;
}
}
return $count;
}
//截取子串
function substr($str, $start, $length=NULL)
{
if ($str== '' || $start>strlen($str )) return;
if (($length!=NULL) && ( $start>0) && ($length> strlen($str)-$start)) return;
if (( $length!=NULL) && ($start< 0) && ($length>strlen($str )+$start)) return;
if ($length == NULL) $length = (strlen($str ) - $start);

if ($start < 0){
for ($i=(strlen( $str)+$start); $i<(strlen ($str)+$start+$length ); $i++) {
$substr .= $str[$i];
}
}
if ($length > 0){
for ($i= $start; $i<($start+$length ); $i++) {
$substr .= $str[$i];
}
}
if ( $length < 0){
for ($i =$start; $i<(strlen( $str)+$length); $i++) {
$substr .= $str[$i ];
}
}
return $substr;
}
//字符串翻转
function strrev($str)
{
if ($str == '') return 0 ;
for ($i=(strlen($str)- 1); $i>=0; $i --){
$rev_str .= $str[$i ];
}
return $rev_str;
}

//字符串比较
function strcmp($s1, $s2)
{
if (strlen($s1) < strlen($s2)) return -1 ;
if (strlen($s1) > strlen( $s2)) return 1;
for ($i =0; $i<strlen($s1 ); $i++){
if ($s1[ $i] == $s2[$i]){
continue;
}else{
return false;
}
}
return 0;
}

//查找字符串
function strstr($str, $substr)
{
$m = strlen($str);
$n = strlen($substr );
if ($m < $n) return false ;
for ($i=0; $i <=($m-$n+1); $i ++){
$sub = substr( $str, $i, $n);
if ( strcmp($sub, $substr) == 0) return $i;
}
return false ;
}
//字符串替换
function str_replace($substr , $newsubstr, $str)
{
$m = strlen($str);
$n = strlen($substr );
$x = strlen($newsubstr );
if (strchr($str, $substr ) == false) return false;
for ( $i=0; $i<=($m- $n+1); $i++){
$i = strchr($str, $substr);
$str = str_delete ($str, $i, $n);
$str = str_insert($str, $i, $newstr);
}
return $str ;
}

//--------------------
// 自实现字符串处理函数
//--------------------
//插入一段字符串
function str_insert($str, $i , $substr)
{
for($j=0 ; $j<$i; $j ++){
$startstr .= $str[$j ];
}
for ($j=$i; $j <strlen($str); $j ++){
$laststr .= $str[$j ];
}
$str = ($startstr . $substr . $laststr);
return $str ;
}
//删除一段字符串
function str_delete($str , $i, $j)
{
for ( $c=0; $c<$i; $c++){
$startstr .= $str [$c];
}
for ($c=( $i+$j); $c<strlen ($str); $c++){
$laststr .= $str[$c];
}
$str = ($startstr . $laststr );
return $str;
}
//复制字符串
function strcpy($s1, $s2 )
{
if (strlen($s1)==NULL || !isset( $s2)) return;
for ($i=0 ; $i<strlen($s1); $i++){
$s2[] = $s1 [$i];
}
return $s2;
}
//连接字符串
function strcat($s1 , $s2)
{
if (!isset($s1) || !isset( $s2)) return;
$newstr = $s1 ;
for($i=0; $i <count($s); $i ++){
$newstr .= $st[$i ];
}
return $newsstr;
}
//简单编码函数(与php_decode函数对应)
function php_encode($str)
{
if ( $str=='' && strlen( $str)>128) return false;
for( $i=0; $i<strlen ($str); $i++){
$c = ord($str[$i ]);
if ($c>31 && $c <107) $c += 20 ;
if ($c>106 && $c <127) $c -= 75 ;
$word = chr($c );
$s .= $word;
}
return $s;
}
//简单解码函数(与php_encode函数对应)
function php_decode($str)
{
if ( $str=='' && strlen($str )>128) return false;
for( $i=0; $i<strlen ($str); $i++){
$c = ord($word);
if ( $c>106 && $c<127 ) $c = $c-20;
if ($c>31 && $c< 107) $c = $c+75 ;
$word = chr( $c);
$s .= $word ;
}
return $s;
}
//简单加密函数(与php_decrypt函数对应)
function php_encrypt($str)
{
$encrypt_key = '';
$decrypt_key = '';
if ( strlen($str) == 0) return false;
for ($i=0; $i<strlen($str); $i ++){
for ($j=0; $j <strlen($encrypt_key); $j ++){
if ($str[$i] == $encrypt_key [$j]){
$enstr .= $decrypt_key[$j];
break;
}
}
}
return $enstr;
}
//简单解密函数(与php_encrypt函数对应)
function php_decrypt($str)
{
$encrypt_key = '';
$decrypt_key = '';
if ( strlen($str) == 0) return false;
for ($i=0; $i<strlen($str); $i ++){
for ($j=0; $j <strlen($decrypt_key); $j ++){
if ($str[$i] == $decrypt_key [$j]){
$enstr .= $encrypt_key[$j];
break;
}
}
}
return $enstr;
}
?>

❸ thinkphp怎么简短url

本文实例分析了thinkphp的四种url访问方式。分享给大家供大家参考。具体分析如下:

一、什么是MVC

thinkphp的MVC模式非常灵活,即使只有三个中和一个也可以运行。

M -Model 编写model类 对数据进行操作

V -View 编写html文件,页面呈现

C -Controller 编写类文件(UserAction.class.php)

二、ThinkPHP的MVC特点

三、ThinkPHP的MVC对应的目

M 项目目录/应用目录/Lib/Model

V 项目目录/应用目录/Tpl

C 项目目录/应用目录/Lib/Action

四、url访问C (简单了解)

五、url的4种访问方式 (这是重点!!)

1.PATHINFO 模式 --重点 在后面使用非常多,如果想传多个参数可以使用键1/值1/键2/值2方法

http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2

2.普通模式也称为重写模式

http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

3.REWRITE重写模式,去掉入口文件便于SEO优化

http://域名/项目名/模块名/方法名/键1/值1/键2/值2

4.兼容模式

http://域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2

如何修改PATHINFO地址中的/改成-在Home/Conf/config.php中

'URL_PATHINFO_DEPR'=>'-',//修改RUL的分隔符,把地址栏的参数部分/换成:http://域名/项目名/入口文件/模块名-方法名-键1-值1-键2-值2

在index.php中开启调用模式,为了在后产模式中不让文件缓存影响开发

define('APP_DEBUG',ture);//如果设置为ture不缓存文件,false则缓存文件

REWRITE模式开启方法

在httpd.conf中查找rewrite_mole moles/mod_rewrite.sl 把#去掉重启服务,在入口文件下新建.htaccess.php,重写文件是去掉index.php的意思:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

❹ thinkphp怎么缩短网址

你看下这里就会明白了http://doc.thinkphp.cn/manual/url_route.html

'URL_ROUTER_ON'=>true,//开启路由
'URL_ROUTE_RULES'=>array(//定义路由规则
'goods/:id'=>'/Home/Goods/cate/',
),

你上面这条应该这样写就OK了

❺ 短网址的常用程序

PHP短网址程序通常采用phurl ,Phurl是一个基于PHP和MySQL实现的网址缩短服务,程序才19KB,包括后台程序,只不过是英文的,网上有汉化版的。
还有一种应用较多的是dwz程序,站长论坛里都能下载,安装比较方便,界面效果及功能都要比Phurl好一些,Phurl在上传后对于一些网址会显示提交的不规范,可能和伪静态的设置有关,而是用dwz程序基本不会碰到此类问题,而且用起来更方便。

❻ 生成短链接,php5.6可用,为什么php7生成不了

#短连接生成算法

class Short_Url {
#字符表
public static $charset = "";

public static function short($url) {
$key = "alexis";
$urlhash = md5($key . $url);
$len = strlen($urlhash);

#将加密后的串分成4段,每段4字节,对每段进行计算,一共可以生成四组短连接
for ($i = 0; $i < 4; $i++) {
$urlhash_piece = substr($urlhash, $i * $len / 4, $len / 4);
#将分段的位与0x3fffffff做位与,0x3fffffff表示二进制数的30个1,即30位以后的加密串都归零
$hex = hexdec($urlhash_piece) & 0x3fffffff; #此处需要用到hexdec()将16进制字符串转为10进制数值型,否则运算会不正常

$short_url = "http://t.cn/";
#生成6位短连接
for ($j = 0; $j < 6; $j++) {
#将得到的值与0x0000003d,3d为61,即charset的坐标最大值
$short_url .= self::$charset[$hex & 0x0000003d];
#循环完以后将hex右移5位
$hex = $hex >> 5;
}

$short_url_list[] = $short_url;
}

return $short_url_list;
}
}

$url = "http://www.cnblogs.com/zemliu/";
$short = Short_Url::short($url);
print_r($short);
********************************
调用方法:
$short = Short_Url::short('www..com');
var_mp($short);
//省略链接memcache
$memcache->set($cacheKey.$short[0],“原始地址”);
************************************

好了,短网址还原了实际就是这个样子的了,可能你看到新浪微博应用里面的短网址都是这个样子:
http://t.cn/zHEYrvV
其实他还原了说不定就是这个样子:
http://t.cn/link.php?url=http://www.Alixixi.com/php-template-framework/832.html
好了,这里就说到第二步了,如何将
http://t.cn/link.php?url=http://www.Alixixi.com/php-template-framework/832.html
缩成
http://t.cn/zHEYrvV
这个地方需要用到url重写,按照本例则可以这么重写:
RewriteEngine On
RewriteBase /
RewriteRule ^/(.*)$ link.php?url=$1[L]

❼ 如何使用php生成短链接网址 第三方API

Failed to create directory
CCLOG("AssetsManagerEx : can not create directory %s\n", fullPath.c_str());
unzClose(zipfile);
return false;
}
}

❽ 短网址的介绍

短网址(Short URL) ,顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。

❾ 短地址的算法原理

现在的短地址网站基本都是通过ASP或者PHP转向来实现网址缩短。 1)将长网址md5生成32位签名串,分为4段, 每段8个字节;
2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
3)这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址; a-z,A-Z,0-9,这62位取6位组合,可产生500多亿个组合数量。把数字和字符组合做一定的映射,就可以产生唯一的字符串,如第62个组合就是aaaaa9,第63个组合就是aaaaba,再利用洗牌算法,把原字符串打乱后保存,那么对应位置的组合字符串就会是无序的组合。
把长网址存入数据库,取返回的id,找出对应的字符串,例如返回ID为1,那么对应上面的字符串组合就是bbb,同理 ID为2时,字符串组合为bba,依次类推,直至到达64种组合后才会出现重复的可能,所以如果用上面的62个字符,任意取6个字符组合成字符串的话,你的数据存量达到500多亿后才会出现重复的可能。

❿ PHP网站如何制作短链接

短连接的原理实际上是虚拟主机代理跳转的过程。
dsdsds.xxxx.xxxx?sdsdsd.dsds=sdw用程序或者其他手段变为c.x?t=1;c.x作为服务入口,解析后边参数,适配前面的长链接,然后重定向到长链接。这就是他的基本原理,不过实现的方法有很多种。

阅读全文

与php短网址算法相关的资料

热点内容
java字符处理函数 浏览:274
指纹用于应用加密什么意思 浏览:998
怎么取消苹果手机的appid密码 浏览:997
门禁系统录制卡怎么加密 浏览:753
ssm看源码哪本书好 浏览:933
linux查看网卡的命令 浏览:497
basic语言算法 浏览:13
怎么快捷删除无用文件夹 浏览:475
你家离学校源码用英语回答 浏览:504
电脑如何用服务器地址 浏览:652
php转化为二进制 浏览:738
程序员到国企感受 浏览:863
js二分搜索算法 浏览:658
文件夹的定义与原意 浏览:202
phpredis任务队列 浏览:463
文件夹的颜色代表什么 浏览:895
单片机模拟通信 浏览:931
pandas在哪里编译 浏览:918
安卓机怎么调清晰度 浏览:346
开始菜单文件夹英语 浏览:887