PHP下escape解码函数的实现方法
function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4)));
elseif(substr($v,0,3) == "&#x")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1)));
elseif(substr($v,0,2) == "&#") {
$ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1)));
}
}
return join("",$ar);
}
function unescape($str){
$ret = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i++){
if ($str[$i] == '%' && $str[$i+1] == 'u'){
$val = hexdec(substr($str, $i+2, 4));
if ($val < 0x7f) $ret .= chr($val);
else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
$i += 5;
}
else if ($str[$i] == '%'){
$ret .= urldecode(substr($str, $i, 3));
$i += 2;
}
else $ret .= $str[$i];
}
return $ret;
}
相关推荐
-
PHP实现通用alert函数的方法
本文实例讲述了PHP实现通用alert函数的方法.分享给大家供大家参考.具体如下: 函数:通用提示 参数:提示訊息,類型或網址,窗口名或函數名,延时毫秒 Alert("","function","close2",300); 代码如下: function Alert($Str,$Typ="back",$TopWindow="",$Tim=100){ echo "<script>"
-
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
php屏蔽电话号码中间四位: 复制代码 代码如下: Method 1: function hidtel($phone){ $IsWhat = preg_match('/(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)/i',$phone); //固定电话 if($IsWhat == 1){ return preg_replace('/(0[0-9]{2,3}[\-]?[2-9])[0-9]{3,4}([0-9]{3}[\-]
-
PHP简单实现欧拉函数Euler功能示例
本文实例讲述了PHP简单实现欧拉函数Euler功能.分享给大家供大家参考,具体如下: 欧拉函数ph(n)的意思是所有小于n且与n互质的个数. 比如说ph(10) = 4{1,3,7,9与10互质} 代码如下: <?php function Euler($x) { $res = $x; $now = 2; while ($x > 1) { if ($x % $now == 0) { $res /= $now; $res *= ($now - 1); while ($x % $now == 0)
-
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
本文实例讲述了PHP中strnatcmp()函数"自然排序算法"进行字符串比较用法.分享给大家供大家参考,具体如下: PHP中strnatcmp()函数使用"自然"算法来比较两个字符串(区分大小写),通常在自然算法中,数字 2 小于数字 10.而在计算机排序中,10 小于 2,这是因为 10 中的第一个数字小于 2. strnatcmp()函数的定义如下: strnatcmp(string1,string2) 参数说明: string1 必需.规定要比较的第一个字
-
PHP实现生成透明背景的PNG缩略图函数分享
之前在WEB开发笔记写过一个PHP生成缩略图的函数,虽然那个函数能够生成缩略图,但是有一定的缺陷,在生成PNG缩略图的时候,背景是黑色,今天又写了一个函数来弥补一下.代码很简单,就是imagealphablending($thumb,false);与imagesavealpha($thumb,true);很重要.主要就是把PNG的alpha值保存,不要丢失而已. 函数如下: <?PHP /* *$sourePic:原图路径 * $smallFileName:小图名称 * $width:小图宽 *
-
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
数据结构很重要,算法+数据结构+文档=程序使用PHP描述冒泡排序算法,对象可以是一个数组 复制代码 代码如下: //冒泡排序(数组排序)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 =
-
php不用内置函数对数组排序的两个算法代码
一朋友找工作遇到的试题,备注一下. 极有可能今后我也会遇到的. 问题:php不用内置函数对数组排序,可能是降序或者升序 第一种方法:传说中的冒泡法 复制代码 代码如下: function arraysort($data, $order = 'asc') { //asc升序 desc降序 $temp = array (); $count = count ( $data ); if ($count <= 0) return false; //传入的数据不正确 if ($order == 'asc')
-
php实现的简单日志写入函数
本文实例讲述了php实现的简单日志写入函数.分享给大家供大家参考.具体实现方法如下: function log( $logthis ){ file_put_contents('logfile.log', date("Y-m-d H:i:s"). " " . $logthis. "\r\n", FILE_APPEND | LOCK_EX); } // use \r\n for new line on windows, just \n on linu
-
通过PHP的内置函数,通过DES算法对数据加密和解密
由于项目的需要,要写一个能生成"授权码"的类(授权码主要包含项目使用的到期时间),生成的授权码将会写入到一个文件当中,每当项目运行的时候,会自动读取出文件中的密文,然后使用唯一的"密钥"来调用某个函数,对密文进行解密,从中解读出项目的使用到期时间. 之前,自己有先试着写了下,主要是base64+md5+反转字符串.算法太过简单,很容易被破解,而且也没有能过做到"密钥"在加解密中的重要性,故而舍之. 后来,查找了相关资料,发现,原来PHP中内置了一
-
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
网站优化不能只定在代码上,内容也是网站最需要优化的对象之一,而图像又是网站中最主要的内容.图像的优化最需要处理的就是将所有上传到网站中的大图片自动缩放称小图(在网页中大小够用就行),以减少N倍的存储空间,并提高下载浏览的速度.所以图片缩放成一个动态网站必须要处理的任务,经常和文件上传绑定在一起工作,能在上传图片的同时就调整其大小.当然有时也需要单独处理图片缩放,例如在做图片列表时,如果直接用大图而在显示时才将其缩放成小图,这样做不仅下载速度会变慢,也会降低页面响应时间.通常遇到这样的应用都是在上
-
PHP实现数字补零功能的2个函数介绍
在PHP中至少有两个函数能够帮助我们快速实现数字补零:首先是PHP str_pad函数: 复制代码 代码如下: #str_pad - 使用另一个字符串填充字符串为指定长度 顾名思义这个函数是针对字符串,对指定的字符串填补任何其它的字符串str_pad参数说明: 复制代码 代码如下: string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD
随机推荐
- 学习YUI.Ext基础第一天
- 正则表达式对qq号码校验
- PowerShell获取Windows用户列表、用户信息的方法
- JDBC连接Sql Server 2005总结
- 在ACCESS和SQL Server下Like 日期类型查询区别
- 威金logo1_.exe完全清除技巧 原创
- 什么是IIS应用程序池以及应用程序池详解
- php设计模式 State (状态模式)
- c++编写简单的计算器程序
- C++中 map的基本操作
- android SQLite数据库总结
- Android修改自己程序字体的方法详解
- Mysql挂掉后无法重启报pid文件丢失的解决方法
- JavaScript 参数中的数组展开 [译]
- 亡羊补牢 注册表损坏之后的恢复
- 用google 赶快来赚美金附图文使用教程第1/2页
- java实现创建缩略图、伸缩图片比例生成的方法
- Java设计模式之访问模式(Visitor者模式)介绍
- php安全配置记录和常见错误梳理(总结)
- php组合排序简单实现方法