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

智能座舱架构与芯片- (9) 音频篇 上 从A2B收发器衍生出来的简化产品具备各种级别的功能,例如端点从节点(不支持TDM)、简化型主节点(支持较短的电缆和更少的从节点数量),以及简化型端点从节点(支持较短电缆和更少的PDM输入)。例如,AVB中的talker和listener是不同的设备,它们的参考时钟源可能并不相同。传统的车载收音机通过天线接收无线电信号,然后由调谐模块(Tuner)进行信号调谐,信道过滤,信道均衡,多路改善,信号解调等,转为数字信号后再交给DSP进行立体声解码,噪声抑制,弱信号处理,最后从车载音响系统进行播放。 阅读详情

程序一: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);
}

YOLO26改进 - C2PSA | C2PSA融合DiffAttention差分注意力:轻量级差分计算实现高效特征降噪,提升模型抗干扰能力 本文介绍了 DiffCLIP,一种将差分注意力机制集成到 CLIP 架构的视觉 - 语言模型,并将其应用于 YOLO26。差分注意力机制通过计算两个互补注意力分布的差值,抵消无关信息干扰。单头差分注意力将 Q 和 K 拆分,分别计算注意力分布后做差值融合;多头差分注意力则每个头独立执行差分操作后聚合输出。关键参数 λ 可动态调控噪声抵消强度。我们将 DiffAttention 代码集成到 YOLO26 中,替换原有模块。实验表明,改进后的 YOLO26 在图像 - 文本理解任务中表现出色。 阅读详情

相关推荐

PHP字符串截取技术深入解析

在动态网站的开发过程中,处理字符串是一项基础而又关键的任务。无论是生成网页的摘要、截取特定长度的文本,还是进行多语言支持的国际化处理,字符串截取功能都扮演着至关重要的角色。从简单的文本处理到复杂的国际化内容管理,PHP 为我们提供了多种字符串截取函数,其中最常使用的包括substr()和。本章将介绍字符串截取的基本概念,并为后面章节中深入探讨各个函数的用法和场景打下基础。我们会从最简单的字符串操作开始,逐步深入到对多字节字符集的支持,最终形成一个全面的字符串处理策略。substr()

weixin_35752645的博客 1274

php 截取字符串的多种方式

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

weixin_45470658的博客 2639

php搜索含中文字符的文件 并提取中文

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

php字符串截取

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

程序员 6052

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

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

weixin_32503361的博客 3592

php常用字符串截取

php常用字符串截取操作

拉米尔的博客 3511

[转]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的专栏 154

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

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

weixin_30363981的博客 165

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的博客 3368

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

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

guoguo1980的专栏 1万+

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的专栏 1239

PHP截取中文字符串方法

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

toplover2的linux学习博客 806

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...

徊忆羽菲 3352

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

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

weixin_34916178的博客 2875

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

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

weixin_33038783的博客 1150

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

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

从2017开始记录起的博客 5713

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

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

weixin_28949937的博客 766

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

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

3931

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的博客 1298

php 中文字符串截取无乱码,php实现中文字符串无乱码截取

PHP开发中会经常用到字符串截取,有的时候字符串截取会出现乱码的情况,那么怎么解决这个问题呢,其实也很容易首先我们要了解关于中英文占多少字节的问题。ASCII码:一个中文汉字占两个字节的空间。UTF-8编码:一个中文(含繁体)等于三个字节。Unicode编码:一个中文(含繁体)等于两个字节。下面我们就通过几个简单的代码示例为大家详细介绍关于PHP截取中英字符串且无乱码的相关知识。一、 subst...

weixin_39753791的博客 579

可视化项目管理项目进度表Excel模板.xlsx

可视化项目管理项目进度表Excel模板.xlsx

上一篇: 加入收藏的代码
下一篇: php截取html字符串自动补全html标签
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值