현재 위치: > 최신 기사 목록> MB_STRCUT를 사용하여 한자의 정확한 차단 및 페이지 매김을 달성하십시오.

MB_STRCUT를 사용하여 한자의 정확한 차단 및 페이지 매김을 달성하십시오.

gitbox 2025-05-29

1. 왜 서브 스트스트 또는 mb_substr 대신 mb_strcut를 선택합니까?

PHP에서 Substr은 바이트 길이에 따라 문자열을 가로 채지 만, 중국어 (예 : UTF-8 인코딩)는 일반적으로 여러 바이트를 차지하며, 이는 중간 문자가 중간에서 잘릴 수있게 만들 수 있습니다. MB_SUBSTR은 문자 길이별로 가로 채울 수 있지만, 페이지를 "바이트 번호"(출력이 특정 수의 바이트로 제한되는 경우)로 페이지를 Paginate하면 ​​MB_STRCUT를 사용해야합니다.

mb_strcut 의 장점은 다음과 같습니다.

  • "바이트 번호"를 눌러 가로 채지 만 문자를 자르지 마십시오.

  • 다중 바이트 문자의 무결성을 보장하십시오.

  • 모든 멀티 바이트 인코딩 형식 (예 : UTF-8, GB2312 등)에 적합합니다.


2. MB_STRCUT 기능의 기본 사용

 mb_strcut(string $string, int $start, ?int $length = null, ?string $encoding = null): string
  • $ string : 처리 할 원래 문자열입니다.

  • $ 시작 : 바이트 오프셋 시작 (0부터 시작).

  • $ 길이 : 가로 채울 최대 바이트 수입니다.

  • $ 인코딩 : 문자열 인코딩, 일반적으로 "UTF-8"로 설정됩니다.

예:

 $text = "이것은 테스트를위한 중국어 문자열입니다";
$cut = mb_strcut($text, 0, 12, 'UTF-8');
echo $cut;

출력 : 이것은 사용입니다 (각 중국자는 UTF-8에서 3 바이트를 차지하고 12 바이트는 처음 4자를 가로 채기 때문에).


3. MB_Strcut를 사용하여 페이징 로직과 함께 콘텐츠를 표시합니다.

1. Pagination Snippet을 받으십시오

페이지 당 60 바이트의 중국 콘텐츠를 표시하고 싶다고 가정하면 다음과 같이 페이지 매김 기능을 작성할 수 있습니다.

 function getPageContent(string $content, int $page = 1, int $bytesPerPage = 60): string {
    $start = ($page - 1) * $bytesPerPage;
    return mb_strcut($content, $start, $bytesPerPage, 'UTF-8');
}

2. 예제 사용 :

 $content = file_get_contents('https://gitbox.net/content.txt');
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;

$display = getPageContent($content, $page);
echo "<div>$display</div>";

이 예 에서이 프로그램은 현재 페이지 번호를 기반으로 60 바이트의 중국 내용을 출력하고 캐릭터 무결성을 자동으로 처리합니다.


4. 페이지 매김 링크 구현

사용자가 페이징 링크를 클릭하여 다음 페이지의 내용을 탐색 할 수 있도록 페이지 하단에서 간단한 페이징 링크를 생성 할 수 있습니다.

 $totalBytes = strlen($content);
$totalPages = ceil($totalBytes / 60);

for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='https://gitbox.net/pagination.php?page=$i'>1.{$i}페이지</a> ";
}

이 논리는 다른 페이지 번호에 대한 링크를 생성합니다. 각 클릭은 표시를 위해 $ _get [ 'page']를 통해 해당 클립 컨텐츠를 얻습니다.


5. 주목할만한 것들

  1. 인코딩 일관성 : 문자열이 MB_Strcut 에서 사용하는 인코딩과 일치하는지 확인하십시오. 그렇지 않으면 차별화 된 문자가 여전히 발생할 수 있습니다.

  2. 마지막 페이지 처리 : 마지막 페이지는 바이트 수를 설정하기에 충분하지 않을 수 있으며 양식으로 처리해야합니다.

  3. 캐시 최적화 : 텍스트 콘텐츠가 자주 변경되지 않으면 캐시 페이징 조각을 고려하여 성능을 향상시킬 수 있습니다.