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