> 백엔드 개발 > PHP 튜토리얼 > 단어 경계를 유지하면서 PHP에서 멀티바이트 문자열을 안전하게 자를 수 있는 방법은 무엇입니까?

단어 경계를 유지하면서 PHP에서 멀티바이트 문자열을 안전하게 자를 수 있는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-04 05:41:09
원래의
607명이 탐색했습니다.

How Can I Safely Truncate Multibyte Strings in PHP While Preserving Word Boundaries?

PHP에서 멀티바이트 문자열 자르기

PHP에서 멀티바이트 문자열 자르기는 복잡한 작업이 될 수 있습니다. 이 기사에서는 멀티바이트 문자 인코딩과 단어 경계를 모두 고려하여 이러한 문자열을 지정된 수의 문자로 자르는 문제를 다룹니다.

이를 달성하기 위한 한 가지 접근 방식은 PHP에 내장된 mb_strimwidth() 함수를 사용하는 것입니다. 지정된 너비의 문자열을 자르는 경우. 그러나 이 함수는 단어 경계를 고려하지 않습니다.

잘림을 위한 사용자 정의 구현

멀티바이트 문자 인코딩과 단어 경계를 모두 처리하기 위해 사용자 정의 구현을 생성할 수 있습니다.

  1. 잘림 길이 계산: 잘라낼 최대 문자 수에서 종료자 문자열을 삭제합니다.
  2. 문자열 길이 확인: 입력 문자열이 계산된 잘림 길이보다 긴지 확인합니다. 그렇지 않으면 변경하지 않고 반환합니다.
  3. 단어 경계 찾기: mb_strrpos()를 사용하여 문자열에서 잘림 길이 아래의 마지막 공백 문자를 검색합니다.
  4. 문자열 잘라내기: 단어 경계가 발견되면 해당 지점에서 문자열을 자릅니다. 그렇지 않으면 계산된 잘린 길이에서 자릅니다.
  5. 종료자 추가: 잘린 문자열에 종결자 문자열을 추가합니다.
  6. 잘린 문자열 반환: 출력 잘리고 추가된 것 string.

사용 예:

function truncate($string, $chars = 50, $terminator = ' …') {
  // Calculate truncation length
  $trunc_len = $chars - strlen($terminator);

  // Validate string length
  if (strlen($string) <= $trunc_len) {
    return $string;
  }

  // Find word boundary
  $space_pos = mb_strrpos($string, ' ', -$trunc_len);

  // Cut string
  if ($space_pos !== false) {
    $truncated_string = mb_substr($string, 0, $space_pos);
  } else {
    $truncated_string = mb_strimwidth($string, 0, $trunc_len);
  }

  // Append terminator
  return $truncated_string . $terminator;
}
로그인 후 복사

이 함수는 문자 인코딩과 단어 경계를 모두 고려하여 멀티바이트 문자열을 자르는 데 사용할 수 있습니다. 이는 이러한 일반적인 PHP 작업을 위한 간단하고 강력한 솔루션을 제공합니다.

위 내용은 단어 경계를 유지하면서 PHP에서 멀티바이트 문자열을 안전하게 자를 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿