PHP的 wordwrap()
函数不适用于UTF-8等多字节字符串。
注释中有几个mb安全功能示例,但使用一些不同的测试数据,它们似乎都存在一些问题。
该函数应采用与wordwrap()
完全相同的参数。
特别要确保它能:
$cut = true
,则剪切中间词,否则不要剪切中间词,否则$break = ' '
,则$break = "\n"
最佳答案
我还没有找到适合我的工作代码。这是我写的。对我来说,它正在工作,以为它可能不是最快的。
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/