Home > Backend Development > PHP Tutorial > PHP custom Chinese string interception function substr_for_gb2312 and substr_for_utf8 examples, _PHP tutorial

PHP custom Chinese string interception function substr_for_gb2312 and substr_for_utf8 examples, _PHP tutorial

WBOY
Release: 2016-07-12 08:50:57
Original
773 people have browsed it

Examples of php custom Chinese string interception functions substr_for_gb2312 and substr_for_utf8,

This article describes the usage of php custom Chinese string interception functions substr_for_gb2312 and substr_for_utf8. Share it with everyone for your reference, the details are as follows:

/*
*gb2312中文字符串截取
 */
function substr_for_gb2312($str,$start,$len=null)
 {
  $totlelength = strlen($str);
  //特例情况
  if ($len == null) $len = $totlelength;
  if ($len ==0) return "";
  if ($len >= $totlelength && $start == 0 ) return $str;
  if ($start > $totlelength) return "";
  //分析$start
  if ($start < 0 ) //$start<0时,转化为$start>0时的定位.
  {
  if ( abs($start) >= $totlelength ) $start = 0;
  else $start = $totlelength - abs($start);
  }
  //确定起始位置,当起始位拆分某汉字时,返回值包含此汉字.
  if ($start > 0)
  {
  $i = $start-1;
  $flag = -1;
  while ($i >= 0)
  {
  if ( ord(substr($str,$i,1)) > 160)
  {
  $flag = -1*$flag;
  }
  else break;
  $i--;
  }
  if($flag==1)
  {
  $start = $start - 1;
  $len++;    //保证不位移.
  }
 }
 $str = substr($str,$start);//截除字符串$str的$start位前的字符
 $totlelength = strlen($str);
 //确定结束位置,当结束位拆分某汉字时,返回值不包含此汉字.
 if ($len<0) $len = $totlelength - abs($len);
 if ($len <= 0) return "";
 $i=min($len,$totlelength);
 $i--;
 $flag = -1;
 while ($i >= 0)
 {
  if (ord(substr($str,$i,1))>160)
  {
   $flag=-1*$flag;
  }
  else break;
  $i--;
 }
 if($flag == 1)
  $len=$len-1;
 $subit=substr($str,0,$len);
 return $subit;
 }
/******************************************************************
* PHP截取UTF-8字符串,解决半字符问题。
* 英文、数字(半角)为1字节(8位),中文(全角)为3字节
* @return 取出的字符串, 当$len小于等于0时, 会返回整个字符串
* @param $str 源字符串
* $len 左边的子串的长度
****************************************************************/
function substr_for_utf($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);
}
&#63;>
/*带start位置的utf8截取函数*/
function utf8_substr($string, $start, $length) {
  preg_match_all ('/[/x00-/x7F]|[/xC2-/xDF][/x80-/xBF]|[/xE0-/xEF][/x80-/xBF][/x80-/xBF]|[/xF0-/xF4][/x80-/xBF][/x80-/xBF][/x80-/x
BF]/', $string, $rs);
  $out = '';
  $size = count ($rs[0]);
  $end = $start + $length;
  if ($end > $size ) {
    $end = $size;
  }
  for ($i = $start; $i < $end; $i++) {
    $out .= $rs[0][$i];
  }
  return $out;
}

Copy after login

Supplement: The editor here recommends a PHP formatting and beautifying typesetting tool on this website to help you code typesetting in future PHP programming:

php code online formatting and beautification tool:

http://tools.jb51.net/code/phpformat

In addition, since php belongs to the C language style, the following tool can also format php code:

C language style/HTML/CSS/json code formatting and beautification tool:
http://tools.jb51.net/code/ccode_html_css_json

Readers who are interested in more PHP-related content can check out the special topics on this site: "Summary of PHP mathematical operation skills", "Summary of PHP operating office document skills (including word, excel, access, ppt)", "PHP array ( Array) operating skills collection", "php sorting algorithm summary", "php common traversal algorithms and techniques summary", "php data structure and algorithm tutorial", "php programming algorithm summary", "php regular expression usage summary", "Summary of PHP operations and operator usage", "Summary of PHP string usage" and "Summary of common PHP database operation skills"

I hope this article will be helpful to everyone in PHP programming.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1133054.htmlTechArticlephp custom Chinese string interception function substr_for_gb2312 and substr_for_utf8 examples, this article describes the php custom Chinese string interception function Functions substr_for_gb2312 and substr_for_utf8 use...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template