マルチバイト文字列の正確な切り詰め
概要
文字列を特定の文字長に切り詰めるには、プログラミングにおける一般的なタスク。ただし、さまざまな幅の文字が含まれる可能性があるマルチバイト文字列を扱う場合は、より複雑になります。この質問は、単語の境界を維持しながらマルチバイト文字列を切り捨てることのニュアンスを詳しく掘り下げています。
PHP の mb_strimwidth 関数
回答で示唆されているように、PHP は mb_strimwidth( ) マルチバイト文字列の切り捨てを処理します。文字列、必要な幅、およびオプションのターミネータを引数として受け取ります。ただし、この関数は単語の境界を考慮しません。
カスタム切り捨てアルゴリズム
単語境界の切り捨てを実現するには、カスタム アルゴリズムを使用できます。
function truncate($string, $chars = 50, $terminator = ' …') { // Calculate the maximum length considering the terminator $max_length = $chars - mb_strlen($terminator); // Short circuit for strings shorter than the maximum length if (mb_strlen($string) <= $max_length) { return $string; } // Find the last space character within the maximum length $last_space_index = mb_strrpos($string, ' ', $max_length); // Cut the string at the last space or at the maximum length if no last space is found $truncated_string = (false !== $last_space_index) ? mb_substr($string, 0, $last_space_index) : mb_strimwidth($string, 0, $chars); // Append the terminator $truncated_string .= $terminator; return $truncated_string; }
この関数は、で説明されている手順を実装します。質問:
デモ
次のコードは、カスタム切り詰めの使用法を示しています。 function:
$in = "Answer to the Ultimate Question of Life, the Universe, and Everything."; $out = truncate($in, 50, ' …'); echo $out; // "Answer to the Ultimate Question of Life, the …"
結論
PHP の mb_strimwidth() 関数は、マルチバイト文字列を切り詰める簡単な方法を提供しますが、単語の境界は考慮されません。カスタム アルゴリズムを実装することで、単語境界の整合性を維持したより正確な切り捨てを実現できます。
以上が単語の境界を維持しながらマルチバイト文字列を正確に切り詰めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。