導航:首頁 > 源碼編譯 > 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短網址演算法相關的資料

熱點內容
現在還有什麼手機好用的app 瀏覽:324
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