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

 

 

 

 

猜你喜欢

转载自lvren007.iteye.com/blog/2287463