没有不值得去解决的问题,也没有不值得去学习的技术!

在utf-8编码下实现字符串截取,一个汉字长度为1,一个英文字母、数字长度为0.5的实现;

中英文加数字混合关键词搜索效果与百度对比,搜索:中困要要要要乱说乱动器8d88847yudghdjuhfhryhw27在要困要要要ssssssssss在要无误仙客shjdjssdddd来要是要要粉黛将军肚要呆要要因,结果如下

作者:

, ,

1、在百度搜索框中输入:中困要要要要乱说乱动器在要困要要要在要无误仙客来要是要要粉黛将军肚要呆要要因要两手空空在 要手榴弹要要在顺在手榴弹要在右要要要要,最终搜索结果如下图:

提示:"要两手" 及其后面的字词均被忽略,因为百度的查询限制在38个汉字以内。
提示:”要两手” 及其后面的字词均被忽略,因为百度的查询限制在38个汉字以内。

2、编写函数qstrlen,代码如下:

/**
* dstrlen  // kcuc
* @param string $str
* @return string $count 一个汉字表示两个长度
*/
function qstrlen($str) {
$count = 0;
$len = 0;
for ($i = 0; $i < strlen($str); $i++) {
$value = ord($str[$i]);
if($value > 127) {
$count++;
if ($value >= 192 && $value <= 223) {
$i++;
} elseif ($value >= 224 && $value <= 239) {
$i = $i + 2;
} elseif ($value >= 240 && $value <= 247) {
$i = $i + 3;
}
}

$count++;

if ($count > 76 && $len == 0) {
$len = $i;
$subject = mb_strcut($str, 0, $len, ‘utf-8’);
}

if ($count > 82) {
return [$subject, str_replace($subject, ”, mb_strcut($str, 0, $i, ‘utf-8’))];
break;
}
}
if ($count > 76 && $count <= 82) {
return [$subject, str_replace($subject, ”, mb_strcut($str, 0, null, ‘utf-8’))];
}
return $count;
}

3、代码截图如下(一个汉字表示2个长度,因此38需要乘以2,且“要两手”为3个汉字的长度,因此在函数中长度为6):

代码截图如下(一个汉字表示2个长度,因此38需要乘以2,且“要两手”为3个汉字的长度,因此在函数中长度为6)
代码截图如下(一个汉字表示2个长度,因此38需要乘以2,且“要两手”为3个汉字的长度,因此在函数中长度为6)

4、调用截取字符串函数,其代码及截图如下:

function qstrlen,如果长度小于38个汉字,则返回字符串长,否则返回数组;
function qstrlen,如果长度小于38个汉字,则返回字符串长,否则返回数组;

5、在网页模板中判断并显示提示信息:

在网页模板中判断并显示提示信息
在网页模板中判断并显示提示信息

6、最终搜索关键词如果长度超出38个汉字,显示效果如下:

最终搜索关键词如果长度超出38个汉字,显示效果如下
最终搜索关键词如果长度超出38个汉字,显示效果如下

7、中英文加数字混合关键词搜索效果与百度对比,搜索:中困要要要要乱说乱动器8d88847yudghdjuhfhryhw27在要困要要要ssssssssss在要无误仙客shjdjssdddd来要是要要粉黛将军肚要呆要要因,结果如下:

百度的3个汉字的提示信息,其长度并非严格的3个汉字的长度;
百度的3个汉字的提示信息,其长度并非严格的3个汉字的长度;
中英文加数字混合关键词搜索效果与百度对比,搜索:中困要要要要乱说乱动器8d88847yudghdjuhfhryhw27在要困要要要ssssssssss在要无误仙客shjdjssdddd来要是要要粉黛将军肚要呆要要因,结果如下
中英文加数字混合关键词搜索效果与百度对比,搜索:中困要要要要乱说乱动器8d88847yudghdjuhfhryhw27在要困要要要ssssssssss在要无误仙客shjdjssdddd来要是要要粉黛将军肚要呆要要因,结果如下

 

需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理