PHP中的一些字符串函数

最近在补php了,所以记下一些笔记吧

其实说起来吧,写程序的时候可以多用用原生的函数来解决问题,实在不行再自己写。这样也可以不把精力放在目前不是很重要的地方,而且原生的函数效率可能会更好

explode()

以某个字符串作为分界拆分变量为数组


$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()

以某个字符串作为分隔符拼接数组元素成一个新的字符串


$member = Array('Vec','Satori','V5','NTз','eczn'); var_dump( implode(',', $member) ); /* "Vec,Satori,V5,NTз,eczn" */

strcmp()

比较两个字符串是否相等


$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()

以某字符串查找某字符串并替换查找出的字符串


$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()

截取字符串


$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()

获得字符串的长度


var_dump( strlen('VecHK') ); /* 5 */

trim()

去除字符串两端的 空格字符 或者 特定字符


$str = " i am People. "; var_dump( trim($str) ); /* "i am People." */

特定字符还有:

好了,我好想睡觉……