PHP截取中文字符串方法大全

php搜索含中文字符的文件 并提取中文 php搜索含中文字符的文件并提取中文,方便快捷 立即下载

程序一:PHP截取中文字符串方法

由于网站首页以及vTigerCRM里经常在截取中文字符串时出现乱码(使用substr),今天找到一个比较好的截取中文字符串方法,在此与大家共享。

function msubstr($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;
}

程序二:PHP截取UTF-8字符串,解决半字符问题

/******************************************************************
* PHP截取UTF-8字符串,解决半字符问题。
* 英文、数字(半角)为1字节(8位),中文(全角)为3字节
* @return 取出的字符串, 当$len小于等于0时, 会返回整个字符串
* @param $str 源字符串
* $len 左边的子串的长度
****************************************************************/
function utf_substr($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);
}
?>

php utf-8 字符串截取

<?
function cutstr($string, $length) {
        preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/", $string, $info); 
        for($i=0; $i<count($info[0]); $i++) {
                $wordscut .= $info[0][$i];
                $j = ord($info[0][$i]) > 127 ? $j + 2 : $j + 1;
                if ($j > $length - 3) {
                        return $wordscut." ...";
                }
        }
        return join('', $info[0]);
}
$string="242432反对感是456犯得上广泛大使馆地方7890";
for($i=0;$i<strlen($string);$i++)
{
 echo cutstr($string,$i)."<br>";
}
?>


截取utf-8字符串函数

为了支持多语言,数据库里的字符串可能保存为UTF-8编码,在网站开发中可能需要用php截取字符串的一部分。为了避免出现乱码现象,编写如下的UTF-8字符串截取函数

关于utf-8的原理请看 UTF-8 FAQ

UTF-8编码的字符可能由1~3个字节组成, 具体数目可以由第一个字节判断出来。(理论上可能更长,但这里假设不超过3个字节)
第一个字节大于224的,它与它之后的2个字节一起组成一个UTF-8字符
第一个字节大于192小于224的,它与它之后的1个字节组成一个UTF-8字符
否则第一个字节本身就是一个英文字符(包括数字和一小部分标点符号)。

以前为某网站设计的代码(也是现在用在首页的长度截取的函数)


Code:
<?php // Cut_Str;
//$sourcestr 是要处理的字符串
//$cutlength 为截取的长度(即字数)
function cut_str($sourcestr,$cutlength)
{
   $returnstr='';
   $i=0;
   $n=0;
   $str_length=strlen($sourcestr);//字符串的字节数
   while (($n<$cutlength) and ($i<=$str_length))
   {
      $temp_str=substr($sourcestr,$i,1);
      $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
      if ($ascnum>=224)    //如果ASCII位高与224,
      {
         $returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符        
         $i=$i+3;            //实际Byte计为3
         $n++;            //字串长度计1
      }
      elseif ($ascnum>=192) //如果ASCII位高与192,
      {
         $returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
         $i=$i+2;            //实际Byte计为2
         $n++;            //字串长度计1
      }
      elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母,
      {
         $returnstr=$returnstr.substr($sourcestr,$i,1);
         $i=$i+1;            //实际的Byte数仍计1个
         $n++;            //但考虑整体美观,大写字母计成一个高位字符
      }
      else                //其他情况下,包括小写字母和半角标点符号,
      {
         $returnstr=$returnstr.substr($sourcestr,$i,1);
         $i=$i+1;            //实际的Byte数计1个
         $n=$n+0.5;        //小写字母和半角标点等与半个高位字符宽...
      }
   }
         if ($str_length>$cutlength){
          $returnstr = $returnstr . "...";//超过长度时在尾处加上省略号
      }
    return $returnstr;

}

 截取utf-8字符串函数

function FSubstr($title,$start,$len="",$magic=true)
{
  /**
  *  powered by Smartpig
  *  mailto:d.einstein@263.net
  */

 if($len == "") $len=strlen($title);
 
 if($start != 0)
 {
  $startv = ord(substr($title,$start,1));
  if($startv >= 128)
  {
   if($startv < 192)
   {
    for($i=$start-1;$i>0;$i--)
    {
     $tempv = ord(substr($title,$i,1));
     if($tempv >= 192) break;
    }
    $start = $i;
   }
  }
 }
 
 if(strlen($title)<=$len) return substr($title,$start,$len);
 
 $alen   = 0;
 $blen = 0;
 
 $realnum = 0;
 
 for($i=$start;$i<strlen($title);$i++)
 {
  $ctype = 0;
  $cstep = 0;
 
  $cur = substr($title,$i,1);
  if($cur == "&")
  {
   if(substr($title,$i,4) == "&lt;")
   {
    $cstep = 4;
    $length += 4;
    $i += 3;
    $realnum ++;
    if($magic)
    {
     $alen ++;
    }
   }
   else if(substr($title,$i,4) == "&gt;")
   {
    $cstep = 4;
    $length += 4;
    $i += 3;
    $realnum ++;
    if($magic)
    {
     $alen ++;
    }
   }
   else if(substr($title,$i,5) == "&amp;")
   {
    $cstep = 5;
    $length += 5;
    $i += 4;
    $realnum ++;
    if($magic)
    {
     $alen ++;
    }
   }
   else if(substr($title,$i,6) == "&quot;")
   {
    $cstep = 6;
    $length += 6;
    $i += 5;
    $realnum ++;
    if($magic)
    {
     $alen ++;
    }
   }
   else if(preg_match("/&#(\d+);?/i",substr($title,$i,8),$match))
   {
    $cstep = strlen($match[0]);
    $length += strlen($match[0]);
    $i += strlen($match[0])-1;
    $realnum ++;
    if($magic)
    {
     $blen ++;
     $ctype = 1;
    }
   }
  }else{
   if(ord($cur)>=252)
   {
    $cstep = 6;
    $length += 6;
    $i += 5;
    $realnum ++;
    if($magic)
    {
     $blen ++;
     $ctype = 1;
    }
   }elseif(ord($cur)>=248){
    $cstep = 5;
    $length += 5;
    $i += 4;
    $realnum ++;
    if($magic)
    {
     $ctype = 1;
     $blen ++;
    }
   }elseif(ord($cur)>=240){
    $cstep = 4;
    $length += 4;
    $i += 3;
    $realnum ++;
    if($magic)
    {
     $blen ++;
     $ctype = 1;
    }
   }elseif(ord($cur)>=224){
    $cstep = 3;
    $length += 3;
    $i += 2;
    $realnum ++;
    if($magic)
    {
     $ctype = 1;
     $blen ++;
    }
   }elseif(ord($cur)>=192){
    $cstep = 2;
    $length += 2;
    $i += 1;
    $realnum ++;
    if($magic)
    {
     $blen ++;
     $ctype = 1;
    }
   }elseif(ord($cur)>=128){
    $length += 1;
   }else{
    $cstep = 1;
    $length +=1;
    $realnum ++;
    if($magic)
    {
     if(ord($cur) >= 65 && ord($cur) <= 90)
     {
      $blen++;
     }else{
      $alen++;
     }
    }
   }
  }
 
  if($magic)
  {
   if(($blen*2+$alen) == ($len*2)) break;
   if(($blen*2+$alen) == ($len*2+1))
   {
    if($ctype == 1)
    {
     $length -= $cstep;
     break;
    }else{
     break;
    }
   }
  }else{
   if($realnum == $len) break;
  }
 }
 
 unset($cur);
 unset($alen);
 unset($blen);
 unset($realnum);
 unset($ctype);
 unset($cstep);
 
 return substr($title,$start,$length);
}

Halcon 形态学 开发案例 (开运算opening(先腐蚀再膨胀)、闭运算closing(先膨胀再腐蚀)) 算子方法:功能:使用用户自定义的结构元素对区域进行开运算参数: Region(输入参数) :输入区域 StructElement(输入参数) :结构元素(区域) RegionOpening(输出参数) :开运算后的区域功能:使用圆形结构元素对区域进行开运算参数: Region(输入参数) :输入区域 RegionOpening(输出参数) :开运算后的区域 Radius(输入参数) :圆形结构元素的半径功能:使用矩形结构元素对区域进行开运算。 阅读详情

相关推荐

自监督预训练(三)wav2vec 2.0原理剖析

一、整体流程 二、feature encoder 理解Conv1d nn.Conv1d(in_channels=5, out_channels=20, kernel_size=3, stride=2) 假设输入input=(batch, in_channels, in_len) batch=1 in_channels=5,对应向量大小,比如word embedding in_len=10,对应word的个数 cnn内部kernel=(in_channels, kernel_size)=(5,3),相当

xmdxcsj的专栏 2万+

php 截取字符串的多种方式

虽然 PHP 本身没有 left() 和 right() 函数,但你可以通过 substr() 来实现类似的功能。// 输出 "Hello"// 输出 "World!

weixin_45470658的博客 2647

Jetson AGX Orin边缘AI实战:用YOLOv8做目标检测,我的环境配置踩坑与优化记录

本文详细记录了在Jetson AGX Orin上部署YOLOv8目标检测模型的环境配置与优化过程。从JetPack版本确认、PyTorch安装陷阱到Torchvision编译技巧,再到YOLOv8部署和系统级优化,提供了完整的实战指南。特别针对边缘AI设备的特性,分享了CUDA加速、内存管理等性能调优经验,帮助开发者高效完成工业级AI应用部署。

weixin_30839881的博客 376

php字符串截取

一、strstr获取指定字符串之后或之前所有字符1、使用 strstr("原始字符","指定的字符",布尔值)布尔值为可选,为 true 返回第一次出现之前的字符串部分,默认为false 返回 返回第一次出现之前的字符串部分 strchr与strstr一样,strstr不区分大小写。该方法输出指定字符之后的内容时会包含指定的字符串一起输出。

程序员 6063

ROS教程(四):RVIZ使用教程(详细图文)

前言 根据前面的教程已经学会了创建功能包,那么本篇文章主要内容则是通过节点来发布数据至RVIZ

Leslie的博客 17万+

Chipyard------介绍与环境搭建

Chipyard是一个开源的、可扩展的、集成化的芯片设计平台,旨在帮助芯片设计人员快速、高效地开发自己的定制芯片。由伯克利大学架构研究小组开发,它基于Chisel语言和Scala编程语言,提供了一整套硬件设计工具和流程,包括RTL设计、验证、物理布局、仿真等,以及支持多种芯片体系结构的库和模块。

qq_38798111的博客 9479

php 截取字符串的方法,php截取字符串方法有哪些

php截取字符串方法有:1、使用substr函数截取字符串;2、使用mb_substr函数截取字符串;3、使用自定义的“function mysubstr($str, $start, $len){}”方法截取字符串等等。本文操作环境:windows7系统、PHP7.1版,DELL G3电脑php截取字符串几个实用的函数1.substr(源字符串,其实位置[,长度])-截取字符串返回部分字符串...

weixin_32503361的博客 3600

单细胞转录组分析(scRNA-seq)

单细胞转录组测序(Single-cell RNA sequencing,scRNA-seq)是一种高通量测序技术,可以在单细胞水平解析基因表达情况,揭示细胞异质性,探索稀有细胞类型,并研究细胞状态转换及动态调控机制。与传统的。

大甘的博客 6149

php常用字符串截取

php常用字符串截取操作

拉米尔的博客 3517

TIA博途中S7-1200进行MODBUS TCP通信(作为服务器)的具体方法演示

TIA博途中S7-1200进行MODBUS TCP通信(作为服务器)的具体方法演示

Robot_PLC_HMI_Automation 8614

Python地理数据处理 十七:植被物候提取和分析(Savitzky-Golay)

植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气、水、土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标。此外,由于生态工程保护建设和植被自然生长等因素,中国陆地生态系统发挥了重要的碳汇作用。因此,定量评估植被时空动态变化是制定生态系统可持续发展目标和衡量生态系统固碳潜力的重要前提,卫星遥感数据衍生的生态参量产品为研究长时间序列全球及区域植被时空变化提供了重要数据源。SG滤波能够对物候信息进行平滑,并提取其中的物候信息

amyniez的博客,欢迎交流讨论 4247

PHP中读取(截取substr)字符串前N个字符或者从第几个字符开始取几个字符

【代码】PHP中读取(截取substr)字符串前N个字符或者从第几个字符开始取几个字符。

linuxghs的专栏 1709

从0开始图形学(光栅化)

从0开始图形学

A112459的专栏 2395

[转]PHP截取中文字符串方法大全

r_length)) { $temp_str=substr($sourcestr,$i,1); $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码 if ($ascnum&gt;=224) //如果ASCII位高于224, { $returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,將3个连续的字符计为单个字符 $i=$i

gxl_ct001的专栏 156

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

板邓:PHP使用mb_strimwidth截取中文字符串方法大全

按字符宽度获取 mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker [, string $encoding ]] ) 参数说明: $str //指定字符串 $start //指定从何处开始截取 $width //截取文字的宽度 $trimmarker //超过$widt...

weixin_30363981的博客 165

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

php字符串截取 及汉字截取

$str='123/456/789/abc'; 截取第一个斜杠前面的内容: echo substr($str,0,strpos($str, '/')) 或者:$array=explode('/', $str); 结果:echo $array[0];// 输出 123 截取第一个斜杠后面的内容 substr($str,strpos($str,'/')+1); //输出 456...

weixin_42124644的博客 3372

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PHP截取中文字符串方法总结

程序一:PHP截取中文字符串方法由于网站首页以及vTigerCRM里经常在截取中文字符串时出现乱码(使用substr),今天找到一个比较好的截取中文字符串方法,在此与大家共享。function msubstr($str, $start, $len) {    $tmpstr = "";    $strlen = $start + $len;    for($i = 0; $i       

guoguo1980的专栏 1万+

PHP截取中文字符串的方法

PHP截取中文字符串方法总结。 程序一:PHP截取中文字符串方法 由于网站首页以及vTigerCRM里经常在截取中文字符串时出现乱码(使用substr)。 一个比较好的php截取中文字符串方法,在此与大家共享。 function msubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len;

toplover2的linux学习博客 807

PHP截取中文字符串方法详解

php自带的一个截取字符串的函数substr,但其只能处理英文、数字却不能截取中文混排的。如果需要在PHP中进行GB2312与UTF-8的互换,需要php_iconv.dll的支持(PHP4中包含此文件)。php5内建支持iconv,更加方便了。不管是uft-8编码转换为gb2312,还是将 gb2312 转换为 uft-8,PHP4.3.1以后的iconv函数很方便,只是需要自己写一个uft8到

Ksly_Tkol的专栏 1244

mysql 中文截取_中文字符串截取

java多字节字符串按字节截取算法思路1.先按照实际要截取的字节长度,复制一份字节数组2.转换回字符串,计算字符长度resLen,并按这个长度截取原字符串3.计算截取的字符串的字节数是否等于需求长度len,相等则直接返回,不相等,则在resLen的基础上减1再截取,则为需要的结果此算法截取的结果为向前截取,即保证最终截...文章胡昜2015-08-14592浏览量前端文本多行省略的完美解决方案在前...

weixin_34916178的博客 2883

PHP中文处理中文字符串截取(mb_substr)和获取中文字符串字数函数

@[toc](PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数) 一、中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encoding,网页编码,如utf-8,GB2312,GBK 实例: &lt...

徊忆羽菲 3365

php 截取字符 中文,php分享几个截取中文字符串的函数

字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍几个个比较好用的字符串截取函数,能够胜任基本的需求了。1. php完美截取中文字符函数mb_substrphp内置的substr无法解决截取中文字符串的乱码问题,在php.ini打开extension=php_mbstring.dll支持的情况下,可以使用mb_substr完美解...

weixin_33038783的博客 1157

php截取汉字方法,PHP截取中文字符串的方法

@header('Content-type: text/html; charset=UTF-8');$arr = "sa撒的发dfa多少sfd看sdf得12上24飞452机.@$#^辣^&%椒粉b";/******************************************************************* 程序一:PHP截取中文字符串方法* 截取中文字符串时出...

weixin_28949937的博客 768

实现中文字符串截取无乱码的方法

小伙伴们大家好,使用substr()截取中文字符乱码的问题怎么解决呢?看下面的方法: 方法一: 使用php内置函数mb_substr(); mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字符数 ...

从2017开始记录起的博客 5716

php字符串截取所有函数,PHP字符串截取函数大全

程序一:PHP截取中文字符串方法function msubstr($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...

weixin_29530431的博客 1302

PHP 中文字符串截取无乱码的方法以及php汉字截取函数_preg_split()

昨天,在写代码时我遇到了一个中文字符串截取的问题,原本是想直接用substr()来,但这个是在单字节符下用的,对于多字节编码的汉字或是其它语言字符中,这个函数可能就用不上了,而且会容易截出乱码来! 现在就把我的下工作记录和总结给大家分享一下: 问题产生及使用案例网站:天气预报15天查询(http://tqybw.net) 问题时间:2013-10-31 解决思路:把汉字

3934
上一篇: 加入收藏的代码
下一篇: php截取html字符串自动补全html标签
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值