멀티바이트 문자열을 정밀하게 자르기
소개
문자열을 특정 문자 길이로 자르는 것은 프로그래밍의 일반적인 작업입니다. 그러나 다양한 너비의 문자를 포함할 수 있는 멀티바이트 문자열을 처리할 때는 더 복잡해집니다. 이 질문은 단어 경계를 유지하면서 멀티바이트 문자열을 자르는 미묘한 차이를 탐구합니다.
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; }
이 함수는 다음에 설명된 단계를 구현합니다. 질문:
데모
다음 코드는 사용자 지정 잘림의 사용법을 보여줍니다. 함수:
$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!