<?php
/**
* 中文字符串截取
*/
function subString($str, $start, $length) {
$i = 0;
//完整排除之前的UTF8字符
while($i < $start) {
$ord = ord($str{$i});
if($ord < 192) {
$i++;
} elseif($ord < 224) {
$i += 2;
} else {
$i += 3;
}
}
//开始截取
$result = '';
while($i < $start + $length && $i < strlen($str)) {
$ord = ord($str{$i});
if($ord < 192) {
$result .= $str{$i};
$i++;
} elseif($ord <224) {
$result .= $str{$i}.$str{$i+1};
$i += 2;
} else {
$result .= $str{$i}.$str{$i+1}.$str{$i+2};
$i += 3;
}
}
if($i < strlen($str)) {
$result .= '...';
}
return $result;
}
/**
* 检测编码
*/
function safeEncoding($string,$outEncoding = 'UTF-8') {
$encoding = "UTF-8";
for($i = 0; $i<strlen($string); $i++) {
if(ord($string{$i}) < 128) {
continue;
}
if((ord($string{$i}) & 224) == 224) {
//第一个字节判断通过
$char = $string{++$i};
if((ord($char) & 128) == 128) {
//第二个字节判断通过
$char = $string{++$i};
if((ord($char) & 128) == 128) {
$encoding = "UTF-8";
break;
}
}
}
if((ord($string{$i}) & 192) == 192) {
//第一个字节判断通过
$char = $string{++$i};
if((ord($char) & 128) == 128) {
//第二个字节判断通过
$encoding = "GB2312";
break;
}
}
}
if(strtoupper($encoding) == strtoupper($outEncoding)) {
return $string;
} else {
return iconv($encoding,$outEncoding,$string);
}
}
class splite_utf8
{
private function splite_single_utf8_left_word ($str )
{
$aciss = ord( $str);
$out_str = '';
if ($aciss >= 240 )
{
$out_str.=substr ( $str, 0, 4 );
}
elseif ($aciss >= 224 )
{
$out_str.=substr ( $str, 0, 3 );
}
elseif ($aciss >= 192 )
{
$out_str.=substr ( $str, 0, 2 );
}
else
{
$out_str.=substr ($str, 0, 1 );
}
return $out_str;
}
private function splite_single_utf8_right_word ($str )
{
$aciss = ord( $str);
$out_str = '';
if ($aciss >= 240 )
{
$out_str.=substr ( $str, 4 );
}
elseif ($aciss >= 224 )
{
$out_str.= substr ( $str, 3 );
}
elseif ($aciss >= 192 )
{
$out_str.= substr ( $str, 2 );
}
else
{
$out_str.= substr ($str, 1 );
}
return $out_str;
}
public function count_word($str, $length=0 )
{
$aciss = ord( $str);
if ($aciss >= 240 )
{
$length+= 1;
$str=substr($str,4);
}
elseif ($aciss >= 224 )
{
$length+= 1;
$str=substr($str,3);
}
elseif ($aciss >= 192 )
{
$length+= 1;
$str=substr($str,2);
}
else
{
$length+= 1;
$str=substr($str,1);
}
if($str=='')
{
return $length;
}
else
{
return $this->count_word($str,$length);
}
}
public function splite_mulit_utf8_word ($str, $start = 0, $length = -1 )
{
$temp = '';
if($start < 0 )
{
$start = $this->count_word($str) + $start;
}
for ($i = 0; $i < $start; $i++ )
{
$str=$this->splite_single_utf8_right_word ($str );
}
for ($i = 0; $i < $length; $i++ )
{
$temp.= $this->splite_single_utf8_left_word ($str );
$str = $this->splite_single_utf8_right_word ($str );
}
if( $length == -1 )
{
return $str;
}
else
{
return $temp;
}
}
}
$utf=new splite_utf8();
$text='的萨芬dfdf!@#$%^&*I()';
$length=$utf->count_word($text);
echo $length."/n";
$word=$utf->splite_mulit_utf8_word ($text, 3, 2);
var_dump($word);
?>相关推荐
ComfyUI破限版全中文AI绘画环境搭建与工作流实战指南
节点式工作流是AI绘画领域的核心技术架构,通过将图像生成过程拆分为可配置的模块化节点,实现了对Stable Diffusion模型的精细化控制。其技术原理基于数据流编程范式,每个节点负责特定功能处理,如文本编码、采样器配置和VAE解码等。这种设计在工程实践中的核心价值在于提供了可追溯、可复用的可视化工作流,特别适合需要参数调优和批量生产的商业场景。ComfyUI作为典型的节点式AI绘画工具,在破限版中针对中文用户优化了界面支持和显卡兼容性,显著降低了技术门槛。在实际应用中,结合ControlNet和LoRA
php 中文字符串截取无乱码,php实现中文字符串无乱码截取
在PHP开发中会经常用到字符串截取,有的时候字符串截取会出现乱码的情况,那么怎么解决这个问题呢,其实也很容易首先我们要了解关于中英文占多少字节的问题。ASCII码:一个中文汉字占两个字节的空间。UTF-8编码:一个中文(含繁体)等于三个字节。Unicode编码:一个中文(含繁体)等于两个字节。下面我们就通过几个简单的代码示例为大家详细介绍关于PHP截取中英字符串且无乱码的相关知识。一、 subst...
深入理解光流法外推雷达回波
背景介绍 鉴于本人实在太过疲惫和劳累,一些简单的便于理解的废话就不在记录,耗费两天时间研究了一下光流法,本帖用于记录学习过程中源码的难点细节。 使用光流预测的核心有两个利用多张连续回波图像(变分)或者相邻两张回波图(交叉相关,LK等)计算出光流场(速度矢量场),之后利用半拉格朗日方法进行外推。 半拉格朗日方法 三时间步半拉格朗日方法,其核心公式如下 但这个有点难理解,但看一维的图就很好理解 它的核心就是迭代求Am(位移矢量),如果理解困难的话,其实质上就是通过未来迭代(猜)出当前时刻的Am找到过去的假设
中文截取无乱码php,PHP截取中文字符串,无乱码,基于正则
多数网上的PHP中文字符串截取,计算长度用的是逐个字符遍历的方法,看起来比较复杂这里提供哦你一种基于正则的解决方案,GBK,UTF-8的中文字符串测试通过1.[代码][PHP]代码/*** @brief strlen_mb 计算字符串长度,支持中文,自动检测编码,UTF-8与GBK测试通过** @param $str** @return*/function strlen_mb($str){$mb_...
App 抓包难?Frida Hook 实战:绕过 SSL Pinning (证书绑定) 抓取某大厂 App 核心接口
当我们使用 Charles 抓包 HTTPS 时,本质上是实施了MITM(中间人攻击)。Charles 伪装成服务器,发给 App 一个自己的证书(伪造证书)。Charles 伪装成 App,拿着真正的证书去请求服务器。如果 App 只是简单校验“证书是否由受信任的 CA 签发”,那你把 Charles 的根证书安装到手机系统里,就能骗过它。但是,是 App 内置了服务器证书的Hash(指纹)。
Windows下Anaconda和PyTorch深度学习环境完整安装配置教程
本文详细介绍了在Windows系统下安装配置PyTorch深度学习环境的完整流程。主要内容包括:硬件环境检查(确认GPU支持)、Anaconda环境管理系统的安装与配置、虚拟环境的创建与管理方法、以及PyTorch及其相关组件的安装指南。特别强调了版本兼容性选择策略(如CUDA版本的确定)、显卡驱动更新、使用Anaconda创建隔离的PyTorch专用环境等关键步骤。无论是使用CPU还是GPU版本,读者都能按照教程快速搭建稳定的PyTorch开发环境,为深度学习项目打下坚实基础。
别再乱用substr了!PHP字符串截取的正确姿势与常见坑点解析
本文深入解析PHP中substr与mb_substr函数在字符串截取时的核心差异与正确用法。针对中文字符等UTF-8多字节文本,直接使用substr会导致乱码,而mb_substr能基于字符数安全截取。文章通过实战案例与避坑指南,帮助开发者根据字符编码选择正确函数,并封装健壮的截取工具,提升代码的健壮性与国际化支持。
ADS基础教程19 - 电磁仿真(EM)基本概念和实操
一、引言二、基本概念1.EM介绍2.Momentum介绍3.FEM介绍4.Substrate介绍三、创建Layout并进行Momentum仿真1.创建Layout2.添加Microtrip(微带线)3.添加Substrate4.Momentum仿真四、总结EM全称Electromagnetic,即electro(电)magnetic(磁)。ADS为设计和评估现代通信系统产品提供了电磁仿真工具(EM)。EM包括Momentumsimulator(动量仿真器)和FEM。
php截取字符串第一组_PHP截取字符串前N个字符的几种方法
比如有一个字符串,我只显示字符串的前10个字符,其余字符用省略号替代。第一种方式:使用substr方式$string = substr($string,0,10).'...';上面代码并不建立,因为它没有检测字符串宽度php 截取字符串前,完善后的代码如下:$string = (strlen($string) > 13) ? substr($string,0,10).'...' : $str...
【ROS机器人系统】自主导航+YOLO目标检测+语音播报
完成自主导航功能,并在小车移动至指定地点的过程中,通过机器人的摄像头检测导航途中所见物体,识别出物体的种类(框选出不同物体并标注识别结果),结合科大讯飞语音合成模块对识别结果进行语音播报。..............................
华为OD机试双机位C卷-虚拟文件系统(C/C++/Py/Java/Js/Go)
华为OD机试(机考)双机位C卷 【虚拟文件系统】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【虚拟文件系统】。
php 正则字符截取,PHP截取中文字符串,无乱码,基于正则
多数网上的PHP中文字符串截取,计算长度用的是逐个字符遍历的方法,看起来比较复杂 这里提供哦你一种基于正则的解决方案,GBK,UTF-8的中文字符串测试通过 无 ?php/** * @brief strlen_mb 计算字符串长度,支持中文,自动检测编码,UTF-8与GBK测试通过 * * @p多数网上的PHP中文字符串截取,计算长度用的是逐个字符遍历的方法,看起来比较复杂这里提供哦你一种基于正则...
视觉Transformer实战 | Cross-Attention Multi-Scale Vision Transformer(CrossViT)详解与实现
Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准 ViT 结构在处理不同尺度的视觉特征时存在局限性。双分支 ViT (Cross-Attention Multi-Scale Vision Transformer, CrossViT) 通过引入双分支结构来解决这一问题,能够同时捕获局部和全局视觉特征。本文将详细介绍 CrossViT 的技术原理,并使用 PyTorch 从零开始实现 CrossViT 模型。
php 字符串截取_PHP中常用的一些功能总结(归纳)
php中文网最新课程每日17点准时技术干货分享这篇文章给大家介绍的内容是关于PHP中常用的一些功能总结(归纳),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1.获取网站是http还是https ?$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] =='on') || (isset($...
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
python截取特定字符前的字符_python如何截取字符串中特定部分,python截取中间字符串...
python如何截取字符串中特定部分Python如何截取字符串的特定部分,Python截取字符串的特定部分:[可以使用str[BeginIndex : endPosition]],其中STR是要截取的字符串,beginIndex是要截取的第一个字符的下标,End Position是要截取的最后一个字符的下标。这个教程操作环境:windows7系统,python3.9版本3.9,这个方法适合所有...
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
php截取字符串下划线,PHP 字符串处理类操作类(截取字符串、字符串转换、检测等等)...
【温馨提示】源码包解压密码:www.youhutong.comPHP 字符串处理类操作类(截取字符串、字符串转换、检测等等):全部方法:01、检查字符串中是否包含某些字符串。02、检查字符串是否以某些字符串结尾。03、检查字符串是否以某些字符串开头。04、获取指定长度的随机字母数字组合的字符串。05、字符串转小写。06、字符串转大写。07、获取字符串的长度。08、截取字符串(从字符串中截取指定长度...
php中英文截取字符串长度,PHP截取字符串长度(中英文混合字符串)_PHP教程
function utf8_substr( $str , $start , $length=null ){// 先正常截取一遍.$res = substr( $str , $start , $length );$strlen = strlen( $str );/* 接着判断头尾各6字节是否完整(不残缺) */// 如果参数start是正数if ( $start >= 0 ){// 往前再截取...
php中中文字符串的截取和获取长度 mb_substr() mb_strlen()
php中 mb_substr($str,$start,$len,$encoding)用于中文字符串的截取,在相应的编码页面输入相应的$encoding mb_strlen($str,$encodding)用于获取中文字符串的长度,包含多字节的字符算成一个
php 截取字符串,要求最多占据N个汉字的位置
方法一: /** * 该方法只适合普通数据 * param string $strCut 需要截取的字符串 * param int $length N个汉字的位置 */ function substrLength($strCut,$length){ $n = 0; $m = 0; $h = 0; $l = 0; $maxLength = $length * 3; for($i=0; $i < $maxLength;$i++){ if
php汉字全是问号_php中文汉字字符串的截取问号
汉字中文使用php自带函数截取有时会碰到有问号了,下面我们整理了几个非常不错的汉字中文精确截取实例。php在操作字符串的问题时间无非两个问题:1.判断字符串编码是gbk还是unicode。2.对相应编码采取相应截取方法。一般情况下我们使用substr截取汉字可能会遇到乱码问题。因为汉字是双字节的,当被截取了一个字节时,这个汉字就无法显示,乱掉了。其实解决很简单,看下面的截取函数: ...
php截取html摘要_自动检查html标签闭合,php截取html字符串及自动补全html标签的方法...
这篇文章主要介绍了php截取html字符串及自动补全html标签的方法,是php对html操作非常实用的技巧,具有一定参考借鉴价值,需要的朋友可以参考下本文实例讲述了php截取html字符串及自动补全html标签的方法。分享给大家供大家参考。具体分析如下:这里总结一下关于利用php截取html字符串自动补全html标签,实际开发中会经常碰到,很多人直接先strip_tags过滤掉html标签,但是...
php中文字符串截取
/* php中字符串截取 @param $str 需要截取的字符串 @param $start 截取的起始位置 @param $length 字符串分割后的长度 @author dq @created_ts 2015-12-22 @updated_ts null @return String 截取后的字符串 */ function extend_substr($str,$st
PHP截取中文字符串乱码问题
一、背景 在编写我这个博客的首页的显示预览内容部分的时候,需要截取内容,于是我用了 substr(); 但是后面出现了乱码(像这样的�),很显然,肯定是字符编码被截断了。 二、小代码 写了个小代码 &lt;?php echo substr('骚广', 0, 1); echo intval(substr('骚广', 0, 1)); echo substr('骚广', 0, 2)...
PHP--字符串操作详解
PHP--字符串操作详解前言一、删除字符串1.trim()函数2.ltrim()函数3.rtrim()函数二、转义字符串4.addslashes()函数5.stripslashes()函数三、检测和计算字符长度6.strlen()函数四、取字符窜子串7.substr()函数五、比较字符串8.strcmp()函数9.strcasecmp()函数六、字符串查找10.strstr()函数11.substr_count()函数七、字符串代替12.str_ ireplace()函数13.substr_replace(
PHP对HTML代码的截取
在许多blog系统的开发中,文章列表显示文章简介是必要的功能许多blog系统都是通过在数据库中添加一个字段解决此类问题但是那样明显增大了数据库空间此函数解决了问题好像是f2blog的作者htmlSubString 函数为截取HTML字串的主函数,截取的类型:$maxlen可以是数字,也可以一个特定的标签,如,如果需要是[more]之类的UBB标签.完整附件包: Click Here To Down
php大于某个值,PHP截取字符串的长度 如果长度大于给定的值则增加…
某些列表页面需要增加对文章标题的长度的限制和截取,以符合相应的展示显示效果。有中文的字符的情况下需要特殊的处理。有时候判断不准确,所以需要借助mb_strlen($str,'utf8');来检测长度。转化的方法如下://截取字符串的长度 如果长度大于给定的值则增加...public function _mb_substr($str, $len=10){$str_len = mb_strlen($s...
给 LikeShop 加一个自定义分销佣金规则:改了哪几个文件
为在LikeShop中添加自定义分销佣金规则(如二级分销商团队激励),需精准定位核心文件:DistributionLogic.php 实现计算逻辑扩展,后台配置逻辑支持可配性,数据库迁移新增字段。关键在于不硬编码比例,通过租户隔离的配置表实现灵活管理。结算与售后逻辑仅在涉及差异化条件时才需调整。务必验证全链路状态流转,避免“算对但结不了”或“退了仍返佣”问题。核心改动聚焦于计算、配置、数据三端,确保可维护性与可配置性。
449



被折叠的 条评论
为什么被折叠?



