首页 >后端开发 >php教程 >PHP 截取 中文

PHP 截取 中文

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB原创
2016-06-23 14:31:46926浏览

函数巧妙地运用了正则表达式, 用起来很方便, 就像 substr 的用法一样, 可以正向截取也可反相截取, 思路值得学习.

PHP代码:

function c_substr ( $string,  $from,  $length =  null ){

     preg_match_all ( '/[x80-xff]?./',  $string,  $match );

     if ( is_null ( $length )){

         $result =  implode ( '',  array_slice ( $match [ 0 ],  $from ));

     } else {

         $result =  implode ( '',  array_slice ( $match [ 0 ],  $from,  $length ));

     }

     return  $result;

$str =  "zhon华人min共和guo";

$from =  3;

$length =  7;

echo (c_substr ( $str,  $from,  $length ));

// 输出: n华人min共

//还有utf-8的

Regarding windix's function to handle UTF-8 strings:

one can use the "u" modifier on the regular expression so that the pattern string is treated as UTF-8

(available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32).

This way the function works for other encodings too (like Greek for example).

The modified function would read like this:

function utf8_substr ( $str, $start )  {

$null =  "";

    preg_match_all ( "/./u",  $str,  $ar );

    if ( func_num_args () >=  3 )  {

        $end =  func_get_arg ( 2 );

        return  join ( $null,  array_slice ( $ar [ 0 ], $start, $end ));

    }  else  {

        return  join ( $null,  array_slice ( $ar [ 0 ], $start ));

    }

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:php面试题目下一篇:php 地址引用