加入收藏 | 设为首页 | 会员中心 | 我要投稿 信阳站长网 (https://www.0376zz.cn/)- 智能营销、云手机、数据工坊、云防火墙、大数据!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-06-16 09:31:00 所属栏目:PHP教程 来源:互联网
导读:在网上看到有很多关于截取中文字符串的一些函数,在此本文章就为各位整理一下这些常用的截取中文字符串的例子吧,希望例子能帮助到大家哦. 常用的php函数: strstr(string,string) //从前面第一次出现某个字符串的地方截取到最后 strrchr(string,string) //从某
  在网上看到有很多关于截取中文字符串的一些函数,在此本文章就为各位整理一下这些常用的截取中文字符串的例子吧,希望例子能帮助到大家哦.
 
  常用的php函数:
 
  strstr(string,string)            //从前面第一次出现某个字符串的地方截取到最后
  strrchr(string,string)         //从某个字符串从最后出现的位置截取到结尾
  strpos(string,string[,int])  //某个字符串第一次出现的位置
  strrpos(string,string)      //某个字符串最后一次出现的位置
  substr(string,int[,int])    //从指定位置开始截取字符串,可以指定截取的长度。
  strlen(string)               //获取字符串的长度PHP截取开始和结束标记间的字符
  方法一:利用explode对字符串进行分,代码如下:
 
  /**
  * Get the content between $start and $end
  *
  * @param string $content 原始字符
  * @param string $start     起始字符
  * @param string $end      结束字符
  * @return string
  */
  function GetStringBetween($content,$start,$end){
      $r = explode($start, $content);
      if (isset($r[1])){
          $r = explode($end, $r[1]);
          return $r[0];
      }
      return '';
  }
  方法二:利用substr截取字符,由于php组件函数,因此字符串处理效率比explode方法要高一些,代码如下:
 
  /**
  * Get the content between $start and $end
  *
  * @param string $content 原始字符
  * @param string $start     起始字符
  * @param string $end      结束字符
  * @return string
  */
  function get_string_between($string, $start, $end){
      $string = " ".$string; //开源软件:phpfensi.com
      $ini = strpos($string,$start);
      if ($ini == 0) return "";
      $ini += strlen($start);
      $len = strpos($string,$end,$ini) - $ini;
      return substr($string,$ini,$len);
  }
  PHP截取所有符合起始与结束标记的字符串,代码如下:
 
  /**
  * Get all every strings between two tags
  *
  * @param string $string 原始字符串
  * @param string $start  起始字符串
  * @param string $end   结束字符串
  * @return array
  */
  function get_all_strings_between($string,$start,$end)
  {
      //Returns an array of all values which are between two tags in a set of data
      $strings = array();
      $startPos = 0;
      $i = 0;
      //echo strlen($string)."n";
      while($startPos < strlen($string) && $matched = get_string_between(substr($string,$startPos),$start,$end))
      {
          if ($matched == null || $matched[1] == null || $matched[1] == '') break;
          $startPos = $matched[0]+$startPos+1;
          array_push($strings,$matched[1]);
          $i++;
      }
      return $strings;
  }
  function get_string_between($string, $start, $end){
      $ini = strpos($string,$start);
      if ($ini == 0) return null;
      $ini += strlen($start);
      $len = strpos($string,$end,$ini) - $ini;
      return array($ini+$len,substr($string,$ini,$len));
  }
  php截取起始与结束标记间字符,带截取次数,是否允许重复选项,代码如下:
 
  /**
  * Get all every strings between two tags
  *
  * @param string $string 原始字符串
  * @param string $start  起始字符串
  * @param string $end   结束字符串
  * @return array
  */
  function get_all_strings_between($string,$start,$end)
  {
      //Returns an array of all values which are between two tags in a set of data
      $strings = array();
      $startPos = 0;
      $i = 0;
      //echo strlen($string)."n";
      while($startPos < strlen($string) && $matched = get_string_between(substr($string,$startPos),$start,$end))
      {
          if ($matched == null || $matched[1] == null || $matched[1] == '') break;
          $startPos = $matched[0]+$startPos+1;
          array_push($strings,$matched[1]);
          $i++;
      }
      return $strings;
  }
  function get_string_between($string, $start, $end){
      $ini = strpos($string,$start);
      if ($ini == 0) return null;
      $ini += strlen($start);
      $len = strpos($string,$end,$ini) - $ini;
      return array($ini+$len,substr($string,$ini,$len));
  }
  截取GB2312中文字符串,代码如下:
 
  <?php
  //截取中文字符串
  function mysubstr($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;
  }
  ?>
  截取utf8编码的多字节字符串,代码如下:
 
  <?php
  //截取utf8字符串
  function utf8Substr($str, $from, $len)
  {
  return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
  '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
  '$1',$str);
  }
  ?>
 

(编辑:信阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读