PHP字符串編碼

1,PHP中字符串的定義方式有那些?

 

單引號,雙引號,定界符

"" ''

<<<EOT

{$name}

EOT;

2,雙引號中的字符除了解析變量以外還解析那些字符?

特殊字符 ”\n" "\b" "\t" "\t"

3,字符串與其他類型是如何轉換?

$a = (string) $b; (int) (float) (array) (boolean) (object)  strval() intval()  floatval()

$b = (int) $a;

$a = implode($array,',');

4,如何獲取字符串 修改

echo $a;

substr($a,1,10);

$b = "wang".$a;

 

php 原理理解

http://www.cnblogs.com/zcy_soft/archive/2013/03/14/2959396.html

1.多進程模型,弱類型,引擎(zend)+組件(ext),中間層(sapi),語法簡單靈活。

2.zend engine==>zend api,zend extension api==>php (PHP api+ extensions)==>sapi==>application(nginx apache)

3. sapi 外部應用和PHP交換數據。(apache2handler,cgi,cli fastcgi+php)

4.動態執行語言。opcodes 動態編譯代碼片段,執行&opcode

5.hashtable 核心數據結構 雙向列表

6.php變量 zval (type:整形、字符串、數組,refcount&is_ref:引用計數,實際數據)

 

1,php字符串在底層是如何存儲的,什麼決定字符串長度。utf-8中文3個字節。gbk中文兩個字節

$str = '懂php的都知道strlen與mb_strlen是求字符串長度的函數';

strlen($str);//66

mb_strlen($str,'utf-8');//34

字符串編碼取決於編碼文件

"二進制安全"是PHP和C語言字符串。 C字符串以編碼‘0’作爲結尾。PHPstr_replace處理所有字符一視同仁。

utf-8編碼和ascll碼是相同,utf-8變長的編碼方式。

unicode

UTF-8是Unicode的實現方式之一

 //獲取字符串編碼

$encoding  = mb_detect_encoding($string, array("ASCII",'UTF-8′,"GB2312′,"GBK",'BIG5′)); 

 

有BOM 格式編碼,或者 無BOM格式編碼 帶簽名的UTF-8文件,打開文件。使用編碼類型。 帶簽名的文件,會告訴人家是UTF-8編碼。

 

string iconv ( string in_charset, string out_charset, string str ) 
注意: 
第二個參數,除了可以指定要轉化到的編碼以外,還可以增加兩個後綴://TRANSLIT 和 //IGNORE, 
其中: 
//TRANSLIT 會自動將不能直接轉化的字符變成一個或多個近似的字符, 
//IGNORE 會忽略掉不能轉化的字符,而默認效果是從第一個非法字符截斷。

 

mb_convert_encoding 可以指定多種輸入編碼,它會根據內容自動識別,但是執行效率比iconv差太多;如:$str = mb_convert_encoding($str,"euc-jp","ASCII,JIS,EUC-JP,SJIS,UTF- 8");“ASCII,JIS,EUC-JP,SJIS,UTF-8”的順序不同效果也有差異

一般情況下用 iconv,只有當遇到無法確定原編碼是何種編碼,或者iconv轉化後無法正常顯示時才用mb_convert_encoding 函數 

 

php 複雜度

http://www.jb51.net/article/39349.htm

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章