PHP截取中文字符串方法总结
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | <?php @header( 'Content-type: text/html; charset=UTF-8' ); $arr = "sa撒的发dfa多少sfd看sdf得12上24飞452机.@$#^辣^&%椒粉b" ; /****************************************************************** * 程序一:PHP截取中文字符串方法 * 截取中文字符串时出现乱码 ****************************************************************/ function msubstr( $str , $start , $len ) { $tmpstr = "" ; $strlen = $start + $len ; for ( $i = 0; $i < $strlen ; $i ++) { if (ord( substr ( $str , $i , 1)) > 0xa0) { $tmpstr .= substr ( $str , $i , 2); $i ++; } else $tmpstr .= substr ( $str , $i , 1); } return $tmpstr ; } echo msubstr( $arr , 0, 15); echo "<br><hr><br>" ; /****************************************************************** * PHP截取UTF-8字符串,解决半字符问题。 * 英文、数字(半角)为1字节(8位),中文(全角)为3字节 * @return 取出的字符串, 当$len小于等于0时, 会返回整个字符串 * @param $str 源字符串 * $len 左边的子串的长度 ****************************************************************/ function utf_substr( $str , $len ) { for ( $i =0; $i < $len ; $i ++) { $temp_str = substr ( $str ,0,1); if (ord( $temp_str ) > 127) { $i ++; if ( $i < $len ) { $new_str []= substr ( $str ,0,3); $str = substr ( $str ,3); } } else { $new_str []= substr ( $str ,0,1); $str = substr ( $str ,1); } } return join( $new_str ); } echo utf_substr( $arr , 39); echo "<br><hr><br>" ; /****************************************************************** * PHP截取UTF-8字符串,解决半字符问题。 * 截取utf-8字符串,截取后,用 ...代替被截取的部分 * $length 左边的子串的长度 ****************************************************************/ function cutstr( $string , $length ) { preg_match_all( "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/" , $string , $info ); for ( $i =0; $i < count ( $info [0]); $i ++) { $wordscut .= $info [0][ $i ]; $j = ord( $info [0][ $i ]) > 127 ? $j + 2 : $j + 1; if ( $j > $length - 3) { return $wordscut . " ..." ; } } return join( '' , $info [0]); } echo cutstr( $arr ,14); echo "<br><hr><br>" ; ?> |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步