自己写的php中文截取函数mb_strlen和mb_substr
今天我要向大家介绍两个自己编写的 PHP 函数:mb_strlen 和 mb_substr。这两个函数可以处理中文字符,甚至在服务器没有安装 mbstring 库的情况下也能胜任。如果您在这方面遇到难题,不妨参考我的解决方案。
在 PHP 中处理字符串时,我们常常会遇到一个问题:自带的 strlen 和 substr 函数无法正确处理中文字符。这时,我们需要使用 mb_ 系列函数来替代。如果您的服务器没有安装 mbstring 库,怎么办呢?这时候,我的两个自定义函数就能派上用场了。
让我们来谈谈 mb_strlen 函数。这个函数的作用是获取字符串的长度,但它能够智能地处理中文字符,将其计算为多个字符。在没有 mbstring 库的情况下,我们可以使用类似功能的自定义函数来实现相同的效果。这个函数对于处理包含中文字符的字符串非常有用。
接下来是 mb_substr 函数。这个函数用于截取字符串的一部分。与原生 substr 函数相比,mb_substr 能够正确处理中文字符的边界,不会因截取而出现乱码。在没有 mbstring 库的情况下,我们的自定义函数同样能够胜任这一任务。使用这个函数,您可以轻松地从包含中文字符的字符串中提取所需的部分。
这两个函数都是在处理中文字符时非常实用的工具。它们能够在服务器没有安装 mbstring 库的情况下,帮助我们轻松处理中文字符串,避免出现乱码或其他问题。如果您在这方面遇到困扰,不妨尝试使用这两个自定义函数,看看它们能否帮助您解决问题。
代码块呈现,替代原有缺失的函数:
```php
// mb_strlen函数定义,用于计算UTF-8编码字符串的长度
if (!function_exists('mb_strlen')) {
function mb_strlen($text, $encode = 'UTF-8') {
if ($encode == 'UTF-8') {
preg_match_all('%(?:[\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]| \xE0[\xA0-\xBF][\x80-\xBF]| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}| \xED[\x80-\x9F][\x80-\xBF]| \xF0[\x90-\xBF][\x80-\xBF]{2}| [\xF1-\xF3][\x80-\xBF]{3}| \xF4[\x80-\x8F][\x80-\xBF]{2})%xs', $text, $out);
return count($out[0]);
} else {
return strlen($text);
}
}
}
?>
摘自网络,作者不详。接下来,我们定义mb_substr函数,用于处理UTF-8编码字符串的子串提取:
```php
if (!function_exists('mb_substr')) {
function mb_substr($str, $start, $len = '', $encoding="UTF-8") {
$limit = mb_strlen($str, $encoding); // 使用前面定义的mb_strlen函数获取字符串长度
$start = mb_strlen(mb_substr($str, 0, $start, $encoding), $encoding); // 找到真正的起始位置
if ($len == '') {
return mb_substr($str, $start); // 返回从起始位置到字符串末尾的子串
} else {
$end = $start + $len; // 计算结束位置索引值(起始位置加上长度)
编程语言
- 自己写的php中文截取函数mb_strlen和mb_substr
- 常用PHP数组排序函数归纳
- WML学习之二基本格式和文件头
- jQuery+HTML5实现手机摇一摇换衣特效
- 浅谈Javascript中的Label语句
- CentOS7下二进制安装mysql 5.7.23
- JavaScript中日期的相关操作方法总结
- ASP生成html的新方法
- struts2+jquery实现ajax登陆实例详解
- 基于jQuery实现的无刷新表格分页实例
- 通过curl模拟post和get方式提交的表单类
- Angular4编程之表单响应功能示例
- jQuery实现的表格前端排序功能示例
- 解决vue 中 echart 在子组件中只显示一次的问题
- ASP小偷程序如何利用XMLHTTP实现表单的提交
- js实现百度联盟中一款不错的图片切换效果完整实