ホームページ > バックエンド開発 > PHPチュートリアル > PHP で単語の境界を維持しながら UTF-8 文字列を安全に切り詰める方法

PHP で単語の境界を維持しながら UTF-8 文字列を安全に切り詰める方法

Mary-Kate Olsen
リリース: 2024-12-18 16:23:11
オリジナル
384 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート