首页 > 语言 > PHP > 正文

PHP截取中文字符串函数总结

2024-09-04 11:49:10
字体:大 中 小
来源:转载
供稿:网友

在网上看到有很多关于截取中文字符串的一些函数,在此本文章就为各位整理一下这些常用的截取中文字符串的例子吧,希望例子能帮助到大家哦.

常用的php函数:

  1. strstr(string,string)            //从前面第一次出现某个字符串的地方截取到最后 
  2. strrchr(string,string)         //从某个字符串从最后出现的位置截取到结尾 
  3. strpos(string,string[,int])  //某个字符串第一次出现的位置 
  4. strrpos(string,string)      //某个字符串最后一次出现的位置 
  5. substr(string,int[,int])    //从指定位置开始截取字符串,可以指定截取的长度。 
  6. strlen(string)               //获取字符串的长度PHP截取开始和结束标记间的字符 

方法一:利用explode对字符串进行分,代码如下:

  1. /** 
  2. * Get the content between $start and $end 
  3. * 
  4. * @param string $content 原始字符 
  5. * @param string $start     起始字符 
  6. * @param string $end      结束字符 
  7. * @return string 
  8. */ 
  9. function GetStringBetween($content,$start,$end){ 
  10.     $r = explode($start, $content); 
  11.     if (isset($r[1])){ 
  12.         $r = explode($end, $r[1]); 
  13.         return $r[0]; 
  14.     } 
  15.     return ''; 
  16. } 

方法二:利用substr截取字符,由于php组件函数,因此字符串处理效率比explode方法要高一些,代码如下:

  1. /** 
  2. * Get the content between $start and $end 
  3. * 
  4. * @param string $content 原始字符 
  5. * @param string $start     起始字符 
  6. * @param string $end      结束字符 
  7. * @return string 
  8. */ 
  9. function get_string_between($string, $start, $end){ 
  10.     $string = " ".$string; //开源软件:Vevb.com 
  11.     $ini = strpos($string,$start); 
  12.     if ($ini == 0) return ""; 
  13.     $ini += strlen($start); 
  14.     $len = strpos($string,$end,$ini) - $ini; 
  15.     return substr($string,$ini,$len); 
  16. } 

PHP截取所有符合起始与结束标记的字符串,代码如下:

  1. /** 
  2. * Get all every strings between two tags 
  3. * 
  4. * @param string $string 原始字符串 
  5. * @param string $start  起始字符串 
  6. * @param string $end   结束字符串 
  7. * @return array 
  8. */ 
  9. function get_all_strings_between($string,$start,$end) 
  10. { 
  11.     //Returns an array of all values which are between two tags in a set of data 
  12.     $strings = array(); 
  13.     $startPos = 0; 
  14.     $i = 0; 
  15.     //echo strlen($string)."n"; 
  16.     while($startPos < strlen($string) && $matched = get_string_between(substr($string,$startPos),$start,$end)) 
  17.     { 
  18.         if ($matched == null || $matched[1] == null || $matched[1] == '') break; 
  19.         $startPos = $matched[0]+$startPos+1; 
  20.         array_push($strings,$matched[1]); 
  21.         $i++; 
  22.     } 
  23.     return $strings; 
  24. } 
  25. function get_string_between($string, $start, $end){ 
  26.     $ini = strpos($string,$start); 
  27.     if ($ini == 0) return null; 
  28.     $ini += strlen($start); 
  29.     $len = strpos($string,$end,$ini) - $ini; 
  30.     return array($ini+$len,substr($string,$ini,$len)); 
  31. } 

php截取起始与结束标记间字符,带截取次数,是否允许重复选项,代码如下:

  1. /** 
  2. * Get all every strings between two tags 
  3. * 
  4. * @param string $string 原始字符串 
  5. * @param string $start  起始字符串 
  6. * @param string $end   结束字符串 
  7. * @return array 
  8. */ 
  9. function get_all_strings_between($string,$start,$end) 
  10. { 
  11.     //Returns an array of all values which are between two tags in a set of data 
  12.     $strings = array(); 
  13.     $startPos = 0; 
  14.     $i = 0; 
  15.     //echo strlen($string)."n"; 
  16.     while($startPos < strlen($string) && $matched = get_string_between(substr($string,$startPos),$start,$end)) 
  17.     { 
  18.         if ($matched == null || $matched[1] == null || $matched[1] == '') break; 
  19.         $startPos = $matched[0]+$startPos+1; 
  20.         array_push($strings,$matched[1]); 
  21.         $i++; 
  22.     } 
  23.     return $strings; 
  24. } 
  25. function get_string_between($string, $start, $end){ 
  26.     $ini = strpos($string,$start); 
  27.     if ($ini == 0) return null; 
  28.     $ini += strlen($start); 
  29.     $len = strpos($string,$end,$ini) - $ini; 
  30.     return array($ini+$len,substr($string,$ini,$len)); 
  31. } 

截取GB2312中文字符串,代码如下:

  1. <?php 
  2. //截取中文字符串 
  3. function mysubstr($str, $start, $len) { 
  4. $tmpstr = ""; 
  5. $strlen = $start + $len; 
  6. for($i = 0; $i < $strlen; $i++) { 
  7. if(ord(substr($str, $i, 1)) > 0xa0) { 
  8. $tmpstr .= substr($str, $i, 2); 
  9. $i++; 
  10. } else 
  11. $tmpstr .= substr($str, $i, 1); 
  12. } 
  13. return $tmpstr; 
  14. } 
  15. ?> 

截取utf8编码的多字节字符串,代码如下:

  1. <?php 
  2. //截取utf8字符串 
  3. function utf8Substr($str, $from, $len) 
  4. { 
  5. return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'. 
  6. '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s', 
  7. '$1',$str); 
  8. } 
  9. ?>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表