php截取字符串,可以用substr,mb_substr,mb_struct三个函数,我一般用substr和mb_substr,也没有仔细研究过他们的区别,
觉得随便用一个就好了,先看代码:
$str1 = substr("abcdef", 1); // 返回 "bcdef" $str2 = substr("abcdef", 2); // 返回 "cdef" $str3 = substr("abcdef", 0,1); // 返回 "a" $str4 = substr("abcdef", 0,2); // 返回 "ab" $str5 = substr("abcdef", -1); // 返回 "f" $str6 = substr("abcdef", -2); // 返回 "ef" $str7 = substr("abcdef", 0,-1); // 返回 "abcde" $str8 = substr("abcdef", 0,-2); // 返回 "abcd" $str9 = substr('你好你好你好',1);//返回:��好你好你好 $str10 = mb_substr('你好你好你好',1);//返回:好你好你好
用substr和mb_substr打印前面八个,结果一样的,但是打印第九和第十个的时候,也就是截取中文的时候,区别出来了,substr返回的结果有乱码,而mb_substr截取的正常,看一下乱码的字符,有两个类似问号的东东,猜一下:UTF-8编码,一个汉字占3个字节,第一个汉字是“你”,把它分为3个字节,然后被截掉了一个,还剩两个(类似两个问号的东东),和后面的“好你好你好”,就打印出了“��好你好你好”,可以在汉字前面加一个字母或者英文标点符号试一下,就可以完全把第一位截掉。
声明:这是猜测,不是什么结论,也不要被带偏了。因为我在网上搜出来的结果是:mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符。
能动手的就不要猜,自己打印出来印证一下,先解决要截取字符串的问题,然后再慢慢研究用哪个好,有什么区别。
php函数方法列表:http://php.net/manual/zh/function.substr.php,http://php.net/manual/zh/function.mb-substr.php