首页 >后端开发 >php教程 >如何在 PHP 中安全截断 UTF-8 字符串,同时保留字边界?

如何在 PHP 中安全截断 UTF-8 字符串,同时保留字边界?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-18 16:23:11368浏览

How to Safely Truncate UTF-8 Strings in PHP While Preserving Word Boundaries?

截断包含 UTF-8 字符的字符串

问题:
将多字节字符串截断到指定的字符限制在 PHP 中,保留单词边界可能是一个挑战。此问题涉及使用名为 truncate() 的自定义方法来实现此功能,该方法应与多字节字符保持一致。

解决步骤:

  1. 确定最大值通过从所需的最大长度中减去终止字符串的长度来确定字符长度。
  2. 确保字符串的长度超过最大长度;如果没有,则原封不动地返回。
  3. 识别低于最大长度的最后一个空白字符以建立单词边界。
  4. 如果没有空白,则截断最后一个空白或最大长度处的字符串存在。
  5. 将终止字符串附加到截断的字符串。
  6. 返回修改后的字符串string.

使用mb_strimwidth()的解决方案:

PHP提供了mb_strimwidth()函数,可以处理多字节字符串截断。然而,该函数不遵守字边界。以下代码片段演示了其用法:

public function truncate($string, $chars = 50, $terminator = ' …')
{
    $maxChars = $chars - strlen($terminator);
    if (mb_strlen($string) <= $maxChars) {
        return $string;
    }

    $lastWhitespace = mb_strrpos(mb_substr($string, 0, $maxChars), ' ');
    if ($lastWhitespace !== false) {
        return mb_substr($string, 0, $lastWhitespace) . $terminator;
    } else {
        return mb_substr($string, 0, $maxChars) . $terminator;
    }
}

以上是如何在 PHP 中安全截断 UTF-8 字符串,同时保留字边界?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn