最近在补php了,所以记下一些笔记吧
其实说起来吧,写程序的时候可以多用用原生的函数来解决问题,实在不行再自己写。这样也可以不把精力放在目前不是很重要的地方,而且原生的函数效率可能会更好
explode()
以某个字符串作为分界拆分变量为数组
123456789101112131415161718192021222324252627282930$str = 'Vec,Satori,V5,NTз,eczn';var_dump( explode(',', $str) );/* ['Vec', 'Satori', 'V5', 'NTз', 'eczn'] */var_dump( explode(',', $str, 2) );/* ['Vec', 'Satori,V5,NTз,eczn'] *//* 如果explode有第三个参数(下称limit),则处理的匹配项最大不可超过 limit 个其余的字符串保留作为返回值数组的最后一个项目 */var_dump( explode(',', $str, -3) );/* ['Vec', 'Satori'] *//* 如果limit是负数,则按照无参数处理,然后舍弃掉结果数组中最后 |limit| 个项目 */var_dump( explode(',', $str, 0) );/* ['Vec,Satori,V5,NTз,eczn'] *//* 如果limit是负数,则它会被当作 1 处理 */var_dump( explode('>', $str) );/* ['Vec,Satori,V5,NTз,eczn'] *//* 如果找不到匹配项,则只返回一个$str项的数组 */var_dump( explode('', $str) );/* 如果匹配条件是个空字符串,则会返回 false */
implode()
以某个字符串作为分隔符拼接数组元素成一个新的字符串
12345678$member = Array('Vec','Satori','V5','NTз','eczn');var_dump( implode(',', $member) );/* "Vec,Satori,V5,NTз,eczn" */
strcmp()
比较两个字符串是否相等
12345678910111213141516171819$str="Hello,PHP";$text = "iLikePHP";var_dump( strcmp('PHPisBest', 'PHPisBest') ); /* 0 *//* 如果返回0则字符串相等 *//* 非0的返回值都是不相等的 */var_dump( strcmp($str, $text) ); /* -1 *//* 返回的是负数,字符串$str没有比$text大 */var_dump( strcmp($text, $str) ); /* 1 *//* 返回的是正数,字符串$text比$str大 */
本质上,strcmp
是比较字符串中的字符。如果$str1中的字符编码比$str2的大,则返回1
,否则返回-1
。(而且是直接退出函数)
又或者说,像strcmp('abcdef','abc')
这样的函数,会返回3
,这说明直到两个字符串都要遍历完,不管其中一个字符串已经到头。这么说来,当遍历第四个字符的时候(而且也是一直相等),第二个参数的字符串(即 ('abc')[3]
)已经找不到字符了,这时候就会给 返回值+1(似乎('abc')[3]
是一个空字符串,所以也只能判断第一个字符串要大),并继续遍历第五个字符,如此类推...
同样的,第一个参数比第二个参数长度要短(strcmp('abc', 'abcdef')
)的情况也是类似的,只不过变成了负数。
我自己感觉吧,没有什么特别的需要的话直接用 ==
来判断两个字符串是否相等 更好,因为strcmp
比较相同的字符串返回的是0,不是true。
str_replace()
以某字符串查找某字符串并替换查找出的字符串
123456789101112$str1 = 'i like Web, Web is best';$count=0;var_dump( str_replace('Web', 'PHP', $str1, $count) );/* "i like PHP, PHP is best" */var_dump( $count ); /* 2 *//* 被替换了2次 */
substr()
截取字符串
123456789101112131415161718$str = "abcdefghij";var_dump( substr($str, 0, 3) ); /* "abc" *//* 从字符串第一个字符开始,截取 3 个字符 */var_dump( substr($str, 3) ); /* "defghij" *//* 从字符串第 3 个字符后截取,直到字符串末尾 */var_dump( substr($str, 0, -3) ); /* "abcdefg" *//* 从第一个字符开始截取,直到末尾第三个字符之前 */var_dump( substr($str, -3) ); /* "hij" *//* 从末尾第三个字符开始截取,直到字符串末尾 */
strlen()
获得字符串的长度
1234var_dump( strlen('VecHK') ); /* 5 */
trim()
去除字符串两端的 空格字符 或者 特定字符
123456$str = " i am People. ";var_dump( trim($str) ); /* "i am People." */
特定字符还有:
- \0 NULL
- \t 制表符
- \n 新行
- \x0B 垂直制表符
- \r 回车
好了,我好想睡觉……