首頁 >後端開發 >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(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