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