首页 后端开发 php教程 发一个刚编的暴力版/温柔版中文截取函数_PHP教程

发一个刚编的暴力版/温柔版中文截取函数_PHP教程

Jul 20, 2016 am 11:00 AM
中文 使用 函数 可靠 安全 截取 推荐 暴力 程序

 

推荐使用暴力版的, 安全可靠; 温柔版的从程序编写的角度看比较高效. 呵呵

基本原理是修正 off, len 可能的错位, 温柔版是从 off 往前倒寻, 寻到第一个

/**
* @brief 简洁高效的字符串截取函数 (支持 CJK字符)
*
* 只是简单判定了高位部分的ASCII值, 能应付绝大多数正规的中英文混合字符串
* 不支持 4字节或3字节的 utf 编码
*
* 要点: 修正双字节中错位的 off 值 / len 值 (注重参数 $len 缺省值为 -1的用意)
* 用法和 substr() 一样, 针对 GBK 码的低位(0x40开始)可能有问题
*/
function my_substr($str, $off, $len = -1)
{
$mlen = strlen($str);

/* 第0步: 参数安全检查与修正 */
if ($off $off = $mlen;
if ($off > $mlen)
$off = 0;

/* 第1步: $off 修正, 倒寻 */
if ($off > 0)
{
$fix = $off;
$mb = false;
do
{
$ch = ord($str{$fix--});
if ($ch break;
$mb = true;
}
while ($fix);

if ($mb)
{
$fix = ($off - $fix);
if ($fix & 1)
{
$off--;
$len ;
}
}
}

/* 第2步: $len 修正, 同上 */
if ($len = $mlen)
{
$len = $mlen - $off;
}
else
{


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445551.htmlTechArticle推荐使用暴力版的, 安全可靠; 温柔版的从程序编写的角度看比较高效. 呵呵 基本原理是修正 off, len 可能的错位, 温柔版是从 off 往前倒寻...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

iPhone中缺少时钟应用程序:如何修复 iPhone中缺少时钟应用程序:如何修复 May 03, 2024 pm 09:19 PM

您的手机中缺少时钟应用程序吗?日期和时间仍将显示在iPhone的状态栏上。但是,如果没有时钟应用程序,您将无法使用世界时钟、秒表、闹钟等多项功能。因此,修复时钟应用程序的缺失应该是您的待办事项列表的首位。这些解决方案可以帮助您解决此问题。修复1–放置时钟应用程序如果您错误地从主屏幕中删除了时钟应用程序,您可以将时钟应用程序放回原位。步骤1–解锁iPhone并开始向左侧滑动,直到到达“应用程序库”页面。步骤2–接下来,在搜索框中搜索“时钟”。步骤3–当您在搜索结果中看到下方的“时钟”时,请按住它并

excel函数公式大全 excel函数公式大全 May 07, 2024 pm 12:04 PM

1、 SUM函数,用于对一列或一组单元格中的数字进行求和,例如:=SUM(A1:J10)。2、AVERAGE函数,用于计算一列或一组单元格中的数字的平均值,例如:=AVERAGE(A1:A10)。3、COUNT函数,用于计算一列或一组单元格中的数字或文本的数量,例如:=COUNT(A1:A10)4、IF函数,用于根据指定的条件进行逻辑判断,并返回相应的结果。

C++ 函数异常进阶:定制错误处理 C++ 函数异常进阶:定制错误处理 May 01, 2024 pm 06:39 PM

C++中的异常处理可通过定制异常类增强,提供特定错误消息、上下文信息以及根据错误类型执行自定义操作。定义继承自std::exception的异常类,提供特定的错误信息。使用throw关键字抛出定制异常。在try-catch块中使用dynamic_cast将捕获到的异常转换为定制异常类型。实战案例中,open_file函数抛出FileNotFoundException异常,捕捉并处理该异常可提供更具体的错误消息。

什么是Bitget Launchpool?如何使用Bitget Launchpool? 什么是Bitget Launchpool?如何使用Bitget Launchpool? Jun 07, 2024 pm 12:06 PM

BitgetLaunchpool是一个为所有加密货币爱好者而设计的动态平台。BitgetLaunchpool以其独特的产品脱颖而出。在这里,您可以质押您的代币来解锁更多奖励,包括空投、高额回报,以及专属早期参与者的丰厚奖池。什么是BitgetLaunchpool?BitgetLaunchpool是一个加密货币平台,可以透过用户友善的条款和条件来质押和赚取代币。透过在Launchpool中投入BGB或其他代币,用户有机会获得免费空投、收益和参与丰厚的奖金池。质押资产的收益在T+1小时内计算,奖励按

使用C++实现机器学习算法:安全性考虑和最佳实践 使用C++实现机器学习算法:安全性考虑和最佳实践 Jun 01, 2024 am 09:26 AM

在使用C++实现机器学习算法时,安全考虑至关重要,包括数据隐私、模型篡改和输入验证。最佳实践包括采用安全库、最小化权限、使用沙盒和持续监控。实战案例中展示了使用Botan库对CNN模型进行加密和解密,以确保安全训练和预测。

PHP微框架:Slim 和 Phalcon 的安全性探讨 PHP微框架:Slim 和 Phalcon 的安全性探讨 Jun 04, 2024 am 09:28 AM

Slim和Phalcon在PHP微框架的安全性对比中,Phalcon内置有CSRF和XSS防护、表单验证等安全特性,而Slim缺乏开箱即用的安全特性,需手动实施安全措施。对于安全至关重要的应用程序,Phalcon提供了更全面的保护,是更好的选择。

Golang 函数接收 map 参数时的注意事项 Golang 函数接收 map 参数时的注意事项 Jun 04, 2024 am 10:31 AM

在Go中传递map给函数时,默认会创建副本,对副本的修改不影响原map。如果需要修改原始map,可通过指针传递。空map需小心处理,因为技术上是nil指针,传递空map给期望非空map的函数会发生错误。

Struts 2框架的安全配置和加固 Struts 2框架的安全配置和加固 May 31, 2024 pm 10:53 PM

为保护Struts2应用程序,可以使用以下安全配置:禁用未使用的功能启用内容类型检查验证输入启用安全令牌防止CSRF攻击使用RBAC限制基于角色的访问

See all articles