写在前面
PHP也能干大事是我总结的PHP语法特性及相关函数类库的经典用法,并不一定是真正能实现四两拨千斤的功效,但是掌握这些方法,可以在你的工作和学习上有一些帮助,希望大家能集思广益,将《PHP也能干大事》丰富得更精彩!转载请注明出处(jb51.net)
二、前言
PHP是常见的脚本语言,主要是因为其简单易学,上手快,几乎50%以上的Web程序都有PHP的身影(不完全统计)。PHP为开发这提供了丰富的函数和API接口,这使得我们能够非常方便地使用其强大的内置函数及扩展,本文是《PHP也能干大事》系列的第一篇,主要总结PHP在编解码、进制转换方面的知识。
三、PHP编解码
1、ASCII编解码
ASCII(发音:英语发音:/"https://zh.wikipedia.org/zh/ASCII">https://zh.wikipedia.org/zh/ASCII
PHP基本函数内置了ASCII的编解码函数,这使得我们能轻松进行ASCII编解码。
int ord ( string $string ) //返回字符串 string 第一个字符的 ASCII 码值。
string chr ( int $ascii ) //返回相对应于 ascii 所指定的单个字符。
复制代码 代码如下:
<"字符转ASCII码\n";
echo getNum($str);
echo "\n";
echo "ASCII码字符\n";
echo getChar(getNum($str));
/* @OUTPUT
字符转ASCII码
87 101 108 99 111 109 101 32 116 111 32 67 104 105 110 97
ASCII码字符
Welcome to China
*/
"codetitle">复制代码 代码如下:
string urlencode(string $str) //此函数便于将字符串编码并将其用于URL的请求部分,同时它还便于将变量传递给下一页。空格编码成 + 。
string urldecode(string $str) //解码给出的已编码字符串中的任何 %XX,加号('+')被解码成一个空格字符。
string rawurlencode (string $str) //根据 RFC 3986 编码指定的字符,空格转换成%20。
string rawurldecode (string $str) //返回字符串,此字符串中百分号(%)后跟两位十六进制数的序列都将被替换成原义字符。 + 不被转换成空格。
两组函数用法一样,除了对于+和空格的转换处理上:rawurlencode将空格转为%20,不将+转为空格;urlencode则不一样。
复制代码 代码如下:
<"mailto:'!@#$%^&*()_+=-~`[]{}|\\;:\'"<>,./">'!@#$%^&*()_+=-~`[]{}|\\;:\'"<>,./"\t->\t",urlencode($value),"\n";
}
/* @OUTPUT
www.jb51.net -> www.jb51.net
https://www.jb51.net/ -> http%3A%2F%2Fwww.jb51.net%2F
PHP也能干大事 -> PHP%E4%B9%9F%E8%83%BD%E5%B9%B2%E5%A4%A7%E4%BA%8B
!@#$%^&*()_+=-~`[]{}|\;:'"<>,./"https://zh.wikipedia.org/zh/Base64">https://zh.wikipedia.org/zh/Base64
string base64_encode(string $data) //使用 base64 对 data 进行编码。
string base64_decode (string $data [, bool $strict = false ]) //对 base64 编码的 data 进行解码。
案例:HTML页面中img标签可以在src属性中采用base64编码方式,来输出图片,这样可以减少HTTP请求次数。
复制代码 代码如下:
<"data:image/png;base64,',base64_encode($string),'">';
/* @OUTPUT
UEhQ5Lmf6IO95Yqe5aSn5LqL
*/
"http://www.ascii.cl/htmlcodes.htm">http://www.ascii.cl/htmlcodes.htm
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = “UTF-8″ [, bool $double_encode = true ]]] ) //对包含如下HTML特殊字符进行HTML实体编码
1.'&' (ampersand) becomes ‘&'
2.'”‘ (double quote) becomes ‘"' when ENT_NOQUOTES is not set.
3.”‘” (single quote) becomes ‘'' (or ') only when ENT_QUOTES is set.
4.'<‘ (less than) becomes ‘<'
5.'>' (greater than) becomes ‘>'
string htmlspecialchars_decode (string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ]) //此函数的作用和 htmlspecialchars() 刚好相反。它将特殊的HTML实体转换回普通字符。
还有功能相同的函数htmlentities/html_entity_decode,这对函数甚至对汉字都进行了HTML实体编码,而且会产生乱码,所以建议使用htmlspecialchars进行编解码。
案例:防止XSS跨站脚本攻击,需要对用户提交的数据进行HTML实体转换:
复制代码 代码如下:
<"><sCript src=https://www.jb51.net/hook.js>';
if (empty($_POST['message'])) {
exit('Message is NULL');
}
$message = htmlspecialchars(trim($_POST['message']));
echo $message;
/* @OUTPUT
测试留言字符'"><sCript src=https://www.jb51.net/hook.js>
*/
"codetitle">复制代码 代码如下:
<"\n";
}elseif(is_dir($dir.'/'.$fileName)){
$string.= $dir.'/'.$fileName.'/'."\n";
getDir($dir.'/'.$fileName);
}
}
}
}
return $string;
}
echo mb_convert_encoding( getDir('php'),'utf8', 'gbk' );
?>
四、总结
编码是数据的处理的基础,所以在PHP的编程开发过程中是相当重要的。对于PHP的处理方法,应用在编程中还需要数量掌握,特别有些相似函数要如何区分。转载请注明出处(jb51.net)
PHP,编码,解码
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。