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

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

常用的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; //开源软件:phpfensi.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. ?>