要想用PHP搞定汉字编程,记住要用mb_substr()函数,用起来超简单,还能把你想要的字符准确地截取出来。要是嫌这个方法不顺手?别担心,我们还有神器——正则表达式!只要设置好合适的模式,提取汉字就变得轻而易举!
要找中文字,咱得先用preg_match_all()学学怎么用正则表达式。只要记住”/./us”这几个小字母就行了。其中,”/”代表啥字符都可以(别忘了不包括换行符哦);然后是”u”和”s”,意思是按Unicode编码和逐行搜寻。这么一搞,找到的中文字保证一个都不会少哟。
首先,要用上array_slice()和implode()这两个小工具,轻松搞定汉字字符串切割。先把想要的部分切出来,然后用implode()将它们拼接回去,搞定收工!这样一来,用正则表达式切中文字符串就容易多了!
使用Unicode编码截取中文字符串
知道?认为处理中文字符串很难?其实,中文字符在Unicode码里有时就占整整三个字节!这可真是个搞定中文字符串的好方法~
这个神器就是让你学会怎么使用Unicode处理中文字符!首先,要用ord()函数查查看每个字母是多少ASCI。如果小于128,那就是普通ascii字符,如果大于等于128,那可就是我们熟悉的中文~接下来,就把这堆多字节当作一串来看,找出其中的三个字节就行了。这样一来,就能轻而易举地从中文字符串里找到自己想要的那部分。
function chinese_substr($str, $start, $length) { preg_match_all("/./us", $str, $matches); $chars = array_slice($matches[0], $start, $length); return implode("", $chars); } $str = "我爱编程,PHP编程很有趣!"; $start = 3; $length = 5; echo chinese_substr($str, $start, $length); // 输出:编程很有趣
用n个计数器来管字数,到头了就停下。虽然麻烦点儿,但别忘了咱还有别的方法,就是用mb_substr(),对于汉字来说够用!
其他方法补充
学PHP可不喜欢某些函数?别急,咱这儿可有妙招!可以查查那些行家们的经验分享,了解全能ấ﹏₯㎕们如何利用口籍和多字节属性来搞定它。也不妨试下递归大法让每个字母自己动手拆分,待到足够长度就停下来。
其实我们可以试试先把中文字符串转成数组,然后再慢慢处理。或者你也可以试试str_split()和implode()这两个函数,其实用起来跟substr()差不多~
说实话处理中文字符串方法多得很,关键是你自己要清楚你需要啥和你在哪种情况下用。当然,别忽视效率和可读性!
总结
function unicode_substr($str, $start, $length) { $result = ''; $strlen = strlen($str); $n = 0; for($i = 0; $i < $strlen; $i++) { if (ord(substr($str, $i, 1)) = $length) { break; } } return $result; } $str = "我爱编程,PHP编程很有趣!"; $start = 3; $length = 5; echo unicode_substr($str, $start, $length); // 输出:编程很有趣
来,我教你个新办法,既不需要mb_substr()那种复杂东西,还能搞定汉字。只需要用正则表达式和Unicode编码就行了。正则表达式超厉害的,不管多复杂的字符串都能处理好;至于Unicode编码,虽然有点特殊,但是很实用。
别小看了中文字符处理!用对方法才能提升编程和开发效率~
评论0