用PHP实现URL转换短网址的算法示例
短网址(Short URL) ,顾名思义就是在形式上比较短的网址。在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。
算法原理
1)将长网址md5生成32位签名串,分为4段, 每段8个字节;
2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
3)这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;
下面是用PHP实现短网址转换的算法,代码如下:
PHP
代码如下 | 复制代码 |
<?php |
通常我们用四组网址中的第一组即可。
这里需要注意的是,这个算法是不可逆的,因此,通常的做法是将短网址和对应的原网址存入数据库,当访问时,从数据库中取出匹配的原网址,通过301或header进行跳转。
下面我们来看一篇关于PHP通过反射方法调用执行类中的私有方法,希望这篇教程能够帮助到各位朋友,有兴趣的可以进来看看。PHP 5 具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。
下面我们演示一下如何通过反射,来调用执行一个类中的私有方法:
<?php
//MyClass这个类中包含了一个名为myFun的私有方法
class MyClass {
private $tmp = 'hello';
private function myFun()
{
echo $this->tmp . ' ' . 'world!';
}
}
//通过类名MyClass进行反射
$ref_class = new ReflectionClass('MyClass');
//通过反射类进行实例化
$instance = $ref_class->newInstance();
//通过方法名myFun获取指定方法
$method = $ref_class->getmethod('myFun');
//设置可访问性
$method->setAccessible(true);
//执行方法
$method->invoke($instance);
?>
例子,FFmpeg读取视频播放时长和码率
代码如下:
代码如下 | 复制代码 |
<?php |
本例中,会用到passthru,可能部分虚拟主机会将此命令禁用
例子2
代码如下 | 复制代码 |
//获得视频文件的缩略图 |
PHPWord(http://phpword.codeplex.com/)是一个很好处理和生成WORD文档的工具,但是生成复杂的word,如colspan和rowspan的实现,还是需要你做些修改。
第一步:在phpword/Style/Cell.php文件类中添加如下属性:
private $_gridSpan;// for the colspan
private $_vMerge;// for the rowspan
第二步:在phpword/Style/Cell.php文件类中添加如下方法:
public function setGridSpan($pValue = null)
{
$this->_gridSpan = $pValue;
}
public function getGridSpan()
{
return $this->_gridSpan;
}
public function setVMerge($pValue = null)
{
$this->_vMerge = $pValue;
}
public function getVMerge()
{
return $this->_vMerge;
}
第三步:在phpword/Style/Cell.php文件类构造函数__construct()中添加如下:
$this->_gridSpan=null;
$this->_vMerge=null;
第四步:在phpword/writer/word2007/base.php类的_writeCellStyle方法中添加:
$gridSpan = $style->getGridSpan();
if(!is_null($gridSpan))
{
$objWriter->startElement('w:gridSpan');
$objWriter->writeAttribute('w:val', $gridSpan);
$objWriter->endElement();
}
/** edited by www.phpddt.com */
$vMerge = $style->getVMerge();
if(!is_null($vMerge))
{
$objWriter->startElement('w:vMerge');
$objWriter->writeAttribute('w:val', $vMerge);
$objWriter->endElement();
}
OK,恭喜你,搞定了,然后看看怎么使用吧!
PHPWord rowspan的使用:
$table = $section->addTable();
$table->addRow();
$table->addCell(100,array('vMerge' => 'restart'))->addText('1');
$table->addCell(100)->addText('2');
$table->addRow();
$table->addCell(100,array('vMerge' => 'fusion'));
$table->addCell(100)->addText('3');
生成的word效果如下截图:
PHPWord colspan的使用:
$table->addRow();
$styleCell=array('gridSpan' => 2);
$table->addCell(200, $styleCell)->addText('PHP二次开发');
$table->addCell(100)->addText('http://www.111cn.net');
$table->addRow();
$table->addCell(100)->addText('PHP');
$table->addCell(100)->addText('python');
$table->addCell(100)->addText('java');
$section->addTextBreak(10);
生成word效果图如下:
直接引入该类文件并创建该类的实例、就可以使用验证码了,验证码类文件vcode.class.php代码如下
这里我使用的画字体的函数是imagettftext()、因为这个函数可以自定义字体样式、从代码中也能看出来
传入的参数有个字体文件属性、如果不喜欢用这个函数可以使用imagestring()函数也行
只不过个人觉得这个函数的默认字体大小、也不好看、还是自定义字体看着舒服点
调用验证码类image_002.php代码如下
HTML代码如下
到这里整个功能就做完了、希望对一些哥们有用、同时也当自己做个笔记
相关文章
- 作者:Sabine 【导读】本文介绍了C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序 冒泡排序 using System; namespace BubbleSorter { public class Bubb...2020-06-25
- 这篇文章主要用实例讲解C#递归算法的概念以及用法,文中代码非常详细,帮助大家更好的参考和学习,感兴趣的朋友可以了解下...2020-06-25
- 经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
- 这篇文章主要是介绍了.net C# 实现任意List的全组合算法实现代码,需要的朋友可以参考下...2020-06-25
同时兼容JS和C#的RSA加密解密算法详解(对web提交的数据加密传输)
这篇文章主要给大家介绍了关于同时兼容JS和C#的RSA加密解密算法,通过该算法可以对web提交的数据进行加密传输,文中通过图文及示例代码介绍的非常详细,需要的朋友们可以参考借鉴,下面来一起看看吧。...2020-06-25图文详解Heap Sort堆排序算法及JavaScript的代码实现
这篇文章以图文详解Heap Sort堆排序算法及JavaScript的代码实现,堆排序算法基于类二叉树的堆数据结构,需要的朋友可以参考下...2016-05-05- 这篇文章主要介绍了C#常用数据结构和算法,这里我们总结了一些知识点,可以帮助大家理解这些概念。...2020-06-25
- 这篇文章主要介绍了JS实现的随机排序功能算法,结合具体实例形式分析了javascript常用的排序算法实现技巧,需要的朋友可以参考下...2017-06-15
- 这篇文章主要介绍了c# 如何实现位图算法(BitMap),文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-11-03
- 这篇文章主要介绍了C++实现的O(n)复杂度内查找第K大数算法,结合实例形式分析了算法的原理以及具体实现方法,需要的朋友可以参考下...2020-04-25
- 这篇文章主要给大家介绍了关于Vue虚拟Dom与diff算法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-26
- 在本篇文章里小编给大家整理的是一篇关于R语言关于随机森林算法的知识点详解内容,有兴趣的朋友们可以跟着学习下。...2021-05-13
- 这篇文章主要介绍了C++并查集亲戚(Relations)算法,实例分析了并查集亲戚算法的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-04-25
- 这篇文章主要为大家详细介绍了C/C++实现八大排序算法汇总,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- 本篇文章介绍了,稀疏图上的Johnson算法的详解。需要的朋友参考下...2020-04-25
- 这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了VC++实现选择排序算法简单示例,代码简洁易懂,有助于读者对数据结构与算法的学习,需要的朋友可以参考下...2020-04-25
- 在本篇文章里小编给大家整理的是一篇关于php回溯算法计算组合总和的实例代码,有需要的朋友们可以学习参考下。...2021-07-14
- 一位站长译的一个国外的如何判断用户是否访问过某个网址文章,个人感觉写得非常不错,下面分享一下。 我们经常有这样的需求:想知道用户之前有没有访问过某个网址。有...2016-09-20
- 在开发项目的过程中,我们经常会需要关于javascript数组的一些算法,比方说数组去重、数组求交集、数组扰乱等等。今天就把个人的汇总整理的算法分享给大家。...2016-02-18