Heim  >  Artikel  >  Backend-Entwicklung  >  php学习零落笔记—字符串分割、fetch函数和单双引号

php学习零落笔记—字符串分割、fetch函数和单双引号

WBOY
WBOYOriginal
2016-06-13 12:27:41925Durchsuche

php学习零散笔记—字符串分割、fetch函数和单双引号。

1 字符串分割——split()函数和preg_split()函数

split — 用正则表达式将字符串分割到数组中——貌似PHP5.3以上已不赞成使用
array split ( string $pattern , string $string [, int $limit ] )

preg_split — 通过一个正则表达式分隔字符串

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

相同点:都是用正则表达式来分割字符串。
split()用起来更简单,比如分割"2008-12-16 15:48:12",split可以这么写split(['- :'])
而preg_split()要复杂些,就得这么写preg_split("/[\s-:]/")
原因是:split()只支持POSIX风格的正则表达式,而preg_split只支持Perl风格的正则表达式
POSIX风格要比Perl风格的简单,但它不是二进制安全的

对了,还有个explode(),和上面两个函数不同,它是用字符串来分割字符串。

array explode ( string $delimiter , string $string [, int $limit ] )

使用一个字符串分割另一个字符串

注:网上有好多二进制安全的解释,我感觉下面这个解释对于理解上面那句话有帮助:

二进制安全的函数只关心二进制化的字符串,不关心字符串的具体格式,它只会严格的按照二进制的数据进行存取,不会以某种特殊格式解析数据。

2 mysqli::fetch_array 和mysqli::fetch_row的区别

 mysqli_result::fetch_row() 

从结果集中取得一行作为枚举数组

mixed mysqli_result::fetch_array ([ int $resulttype = MYSQLI_BOTH ] ) 

从结果集中取得一行作为关联数组,或数字数组,或二者兼有

手册说两者性能貌似没有太大的区别,前者是后者的增强版。

3 单引号和双引号
php的两种字符串类型,单引号和双引号。
单引号的字符串是纯文本(真正的文本),它会不经修改而直接发送给浏览器,不管是变量名称还是其它任何文本。
双引号的字符串,php会尝试计算双引号字符串,其中的变量名称将被变量值所代替。
在这里,变量、字符串、文本和原始数据的概念不能混淆:
变量是表示数据的符号,变量用变量名称表示,表示数据的符号
而单引号的字符串则是文本,本身(字面值)就是原始数据
关键是理解文本和变量的区别,文本是数据,变量是数据的符号。

可以看看《PHP和MySQL Web开发(原书第4版)》中文版第12页对于字符串的介绍。

参考:

《PHP和MySQL Web开发(原书第4版)》中文版第12页,Luke Welling & Laura Thomson著

php二进制字符串的含义 http://www.lofter.com/postentry?from=search&permalink=139418_34c583

知乎:二进制安全是什么意思? http://www.zhihu.com/question/28705562

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn