1 PHP字符串基础知识
定义:字符结合,在C语言中类似字符数组的概念。
表达方式:
1)单引号:不解析变量
2)双引号
解析字符 \n \r \t \v \e \f \\ \$ \"
\[0-7]{1,3} 八进制方式表达的字符
\x[0-9a-Fa-f]{1,2} 十六进制方式表达的字符
3)heredoc
1:标识符的名称和变量名的要求一样.
2:heredoc的标识符,一定是独占一行,而且前面没有任何其他字符
3:heredoc对文本的处理,和 双引号一样,即\r\n\t,变量,等,能解析出来.
4)noewdoc
写法和heredoc一样,但是效果和单引号一样,不转义\n \r \t 变量等。
2 PHP字符串内部存储方式
struct
{
char *val; 字符指针
int len; int 长度 当前字符串的长度
}str;
1.c语言的字符指针 即字符数组 ,所以可以通过[]或{}来访问某一个字符。
2.字符串长度可以达到2G内存。
3.常见函数都是单字节处理方式
4.二进制安全的。原因:结构体len表示结构体长度。比如c语言中字符串是指连续的内存空间,以'\0'结尾,所以当字符串中包含'\0'的时候,会截断字符串。
3 串行化字符串
方法:
1.函数serialize().
2json_encode().
3.var_export($item,true);
serialize不仅仅可以转化数组还可以转换对象,效率上json_encode高效
4 字符编码
字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
字符编码(Character Encoding):二进制与字符的映射关系,就是将字符转换为计算机可以接受的数 字代码。就是以二进制的数字来对应字符集的字符。
常见字符编码:
ASCII 美国
字符集:包括控制字符(回车 退格);可显示字符(英文大小写字符、阿拉伯数字和西文符号) 编码:7位表示一个字符 共计(2的7次方)128个字符。
ISO-8859-1(latin1) 西欧国家
Big5 台湾
GB2312 中国 6763个汉字 和非汉字682个 2个字节表示 Gbk 18030个汉字
Unicode 字符集 (统一码、万国码、单一码、标准万国码)是业界的一种标准,它可以使电脑得以体现世界上数十种文字的系统
5 Utf-8和Gbk编码原理
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码(定长码),也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。
UTF-8使用一至四个字节为每个字符编码:
1.128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。
2.带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码(Unicode范围由U+0080至U+07FF)。
3.其他基本多文种平面(BMP)中的字符(这包含了大部分常用字)使用三个字节编码。
4.其他极少使用的Unicode辅助平面的字符使用四字节编码。
6 :字符串特性
1.可以使用大括号{}来使用;
2.用超出字符串长度的下标写入将会拉长字符串并且以空格填充。
3.非整数类型下标会被转成整数,非法下标类型会产生一个E_NOTICE的错误。