Multi-byte safe wordwrap() function for UTF-8(UTF-8 的多字节安全 wordwrap() 函数)
本文介绍了UTF-8 的多字节安全 wordwrap() 函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
PHP 的 wordwrap()
函数对于多像UTF-8这样的字节串.
PHP's wordwrap()
function doesn't work correctly for multi-byte strings like UTF-8.
评论里有几个mb安全函数的例子,但是有了一些不同的测试数据,它们似乎都有一些问题.
There are a few examples of mb safe functions in the comments, but with some different test data they all seem to have some problems.
该函数应采用与 wordwrap()
完全相同的参数.
The function should take the exact same parameters as wordwrap()
.
特别要确保它适用于:
- 如果
$cut = true
,则剪切中间词,否则不剪切中间词 - 如果
$break = ' '
,不要在单词中插入额外的空格 - 也适用于
$break = " "
- 适用于 ASCII 和所有有效的 UTF-8
- cut mid-word if
$cut = true
, don't cut mid-word otherwise - not insert extra spaces in words if
$break = ' '
- also work for
$break = " "
- work for ASCII, and all valid UTF-8
推荐答案
这个好像很好用...
function mb_wordwrap($str, $width = 75, $break = "
", $cut = false, $charset = null) {
if ($charset === null) $charset = mb_internal_encoding();
$pieces = explode($break, $str);
$result = array();
foreach ($pieces as $piece) {
$current = $piece;
while ($cut && mb_strlen($current) > $width) {
$result[] = mb_substr($current, 0, $width, $charset);
$current = mb_substr($current, $width, 2048, $charset);
}
$result[] = $current;
}
return implode($break, $result);
}
这篇关于UTF-8 的多字节安全 wordwrap() 函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:UTF-8 的多字节安全 wordwrap() 函数
基础教程推荐
猜你喜欢
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- PHP 守护进程/worker 环境 2022-01-01
- HTTP 与 FTP 上传 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 使用 PDO 转义列名 2021-01-01