国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP也能干大事之PHP中的編碼解碼詳解

2020-03-22 19:32:12
字體:
來源:轉載
供稿:網友
寫在前面 PHP也能干大事是我總結的html' target='_blank'>PHP語法特性及相關函數類庫的經典用法,并不一定是真正能實現四兩撥千斤的功效,但是掌握這些方法,可以在你的工作和學習上有一些幫助,希望大家能集思廣益,將《PHP也能干大事》豐富得更精彩!轉載請注明出處(phpstudy.net) 二、前言 PHP是常見的腳本語言,主要是因為其簡單易學,上手快,幾乎50%以上的Web程序都有PHP的身影(不完全統計)。PHP為開發這提供了豐富的函數和API接口,這使得我們能夠非常方便地使用其強大的內置函數及擴展,本文是《PHP也能干大事》系列的第一篇,主要總結PHP在編解碼、進制轉換方面的知識。 三、PHP編解碼 1、ASCII編解碼 ASCII(發音:英語發音:/ ski/ ASS-kee,American Standard Code for Information Interchange,美國信息交換標準代碼)是基于拉丁字母的一套電腦編碼系統。它主要用于顯示現代英語,而其擴展版本EASCII則可以部分支持其他西歐語言,并等同于國際標準ISO/IEC 646。由于萬維網使得ASCII廣為通用,直到2007年12月,逐漸被Unicode取代。 https://zh.wikipedia.org/zh/ASCII PHP基本函數內置了ASCII的編解碼函數,這使得我們能輕松進行ASCII編解碼。 int ord ( string $string ) //返回字符串 string 第一個字符的 ASCII 碼值。
string chr ( int $ascii ) //返回相對應于 ascii 所指定的單個字符。
'!@#$%^&*()_+=-~`[]{}|/;:'" ,./ '
);
foreach ($str_arr as $key = $value) {
echo $value," - ",urlencode($value)," ";
}
/* @OUTPUT
www.phpstudy.net - www.phpstudy.net
http://www.phpstudy.net/ - http%3A%2F%2Fwww.phpstudy.net%2F
PHP也能干大事 - PHP%E4%B9%9F%E8%83%BD%E5%B9%B2%E5%A4%A7%E4%BA%8B
!@#$%^&*()_+=-~`[]{}|;:'" ,./ - %21%40%23%24%25%5E%26%2A%28%29_%2B%3D-%7E%60%5B%5D%7B%7D%7C%5C%3B%3A%27%22%3C%3E%2C.%2F%3F
*/

3、Base64編解碼 Base64是一種基于64個可打印字符來表示二進制數據的表示方法。由于2的6次方等于64,所以每6個位元為一個單元,對應某個可打印字符。三個字節有24個位元,對應于4個Base64單元,即3個字節需要用4個可打印字符來表示。它可用來作為電子郵件的傳輸編碼。使用的字符包括大小寫字母各26個,加上10個數字,和加號「+」,斜杠「/」,一共64個字符,等號「=」用來作為后綴用途。完整的base64定義可見RFC 1421和RFC 2045。編碼后的數據比原始數據略長,為原來的4/3。在電子郵件中,根據RFC 822規定,每76個字符,還需要加上一個回車換行。可以估算編碼后數據長度大約為原長的135.1%。 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請求次數。
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實體轉換: 復制代碼 代碼如下:
php
$_POST['message'] = '測試留言字符'" sCript src=http://www.phpstudy.net/hook.js
if (empty($_POST['message'])) {
exit('Message is NULL');
}
$message = htmlspecialchars(trim($_POST['message']));
echo $message;
/* @OUTPUT
測試留言字符' sCript src=http://www.phpstudy.net/hook.js
*/

5、二進制、八進制、十進制、十六進制相互轉換 進制之間的轉換這里沒什么好說的,總之都差不多,只要記住多少進制就是逢多少進一位,比如10進制就是9的下一位就是10,二進制、八進制、十六進制以此類推。 string bin2hex (string $str) //返回 ASCII 字符串,為參數 str 的十六進制表示。轉換使用字節方式,高四位字節優先。
string hex2bin (string $data) //轉換十六進制字符串為二進制字符串。
number bindec (string $binary_string) //返回 binary_string 參數所表示的二進制數的十進制等價值。
string decbin (int $number) //返回一字符串,包含有給定 number 參數的二進制表示。所能轉換的最大數值為十進制的 4294967295,其結果為 32 個 1 的字符串。
number octdec (string $octal_string) //返回 octal_string 參數所表示的八進制數的十進制等值。
string decoct (int $number) //返回一字符串,包含有給定 number 參數的八進制表示。所能轉換的最大數值為十進制的 4294967295,其結果為 “37777777777”。
string base_convert (string $number , int $frombase , int $tobase) //任意進制轉換,返回一字符串,包含 number 以 tobase 進制的表示。number 本身的進制由 frombase 指定。frombase 和 tobase 都只能在 2 和 36 之間(包括 2 和 36)。高于十進制的數字用字母 a-z 表示,例如 a 表示 10,b 表示 11 以及 z 表示 35。 6 、GBK、UTF-8字符編碼轉換 在寫代碼過程中,經常遇到編碼問題而引發的亂碼。其實解決編碼問題非常簡單,只要使用一種編碼即可,一般來說,采用萬國碼——UTF-8是最好的選擇。 這里說的編碼是文字編碼和文件存儲的編碼,當然,不得不提到系統的編碼的差異性: 系統 編碼 字符結尾
Windows GBK
*nix UTF-8 所以在處理特殊字符的時候要特別注意。 常見的編碼有GBK、UTF-8等等,函數使用上一般采用兩種: string mb_convert_encoding (string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ]) //將 string 類型 str 的字符編碼從可選的 from_encoding 轉換到 to_encoding。
string iconv (string $in_charset , string $out_charset , string $str) //將字符串 str 從 in_charset 轉換編碼到 out_charset。 案例:Windows系統,架設了一個WAMP服務器,將如下腳本另存為一個UTF-8編碼的php文件,即可通過瀏覽器查看無亂碼的php目錄里的文件;如果不是用mb_convert_encoding轉碼,將直接導致輸出亂碼(Windows作為服務器)。 復制代碼 代碼如下:
php
function getDir($dir){
static $string = '';
if(is_file($dir)){
$string.= $dir;
}else{
$oDir = @opendir($dir);
while($fileName = readdir($oDir)){
if($fileName!='.' && $fileName!='..'){
if(is_file($dir.'/'.$fileName)){
$string.=$fileName." ";
}elseif(is_dir($dir.'/'.$fileName)){
$string.= $dir.'/'.$fileName.'/'." ";
getDir($dir.'/'.$fileName);
}
}
}
}
return $string;
}
echo mb_convert_encoding( getDir('php'),'utf8', 'gbk' );


四、總結 編碼是數據的處理的基礎,所以在PHP的編程開發過程中是相當重要的。對于PHP的處理方法,應用在編程中還需要數量掌握,特別有些相似函數要如何區分。轉載請注明出處(phpstudy.net)PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 稻城县| 云龙县| 自治县| 印江| 南宫市| 南宁市| 荣成市| 吉木萨尔县| 东海县| 上林县| 常州市| 文化| 木里| 镇原县| 德江县| 浦北县| 磴口县| 桑日县| 湖口县| 大余县| 沙雅县| 上犹县| 镇坪县| 石城县| 唐河县| 章丘市| 肥东县| 当涂县| 麻城市| 永川市| 德格县| 潍坊市| 同德县| 沅陵县| 卫辉市| 永仁县| 元朗区| 桃园县| 盐津县| 仙桃市| 巴彦淖尔市|