gpt4 book ai didi

php - UTF-8 的多字节安全 wordwrap() 函数

转载 作者:行者123 更新时间:2023-12-02 22:14:53 27 4
gpt4 key购买 nike

PHP 的 wordwrap()对于 UTF-8 等多字节字符串,该函数无法正常工作。

评论里有一些mb安全函数的例子,但是通过一些不同的测试数据,它们似乎都存在一些问题。

该函数应采用与 wordwrap() 完全相同的参数。

特别要确保它能够:

  • 如果$cut = true则剪切单词中部,否则不剪切单词中部
  • 如果 $break = ' ',则不会在单词中插入多余的空格
  • 也适用于$break = "\n"
  • 适用于 ASCII 和所有有效的 UTF-8

最佳答案

我还没有找到任何适合我的工作代码。这是我写的。对我来说它正在工作,但认为它可能不是最快的。

function mb_wordwrap($str, $width = 75, $break = "\n", $cut = false) {
$lines = explode($break, $str);
foreach ($lines as &$line) {
$line = rtrim($line);
if (mb_strlen($line) <= $width)
continue;
$words = explode(' ', $line);
$line = '';
$actual = '';
foreach ($words as $word) {
if (mb_strlen($actual.$word) <= $width)
$actual .= $word.' ';
else {
if ($actual != '')
$line .= rtrim($actual).$break;
$actual = $word;
if ($cut) {
while (mb_strlen($actual) > $width) {
$line .= mb_substr($actual, 0, $width).$break;
$actual = mb_substr($actual, $width);
}
}
$actual .= ' ';
}
}
$line .= trim($actual);
}
return implode($break, $lines);
}

关于php - UTF-8 的多字节安全 wordwrap() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825226/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com