현재 위치: > 최신 기사 목록> mb_strcut를 통해 문자열 페이징을 구현하는 방법

mb_strcut를 통해 문자열 페이징을 구현하는 방법

gitbox 2025-05-26

다국어 문자가 포함 된 대형 텍스트를 처리 할 때 PHP의 문자열 기능이 다중 바이트 인코딩을 지원하지 않으면 문자와 차량 코드가 잘릴 수 있습니다. 특히 큰 텍스트 조각을 표시 해야하는 시나리오에서 현악기를 안전하게 가로 채는 방법이 주요 문제가됩니다. 이 기사에서는 MB_Strcut 함수를 사용하여 문자열 페이지 매김 디스플레이를 구현하는 방법을 소개하여 문자 무결성을 보장 할뿐만 아니라 프론트 엔드 페이지 매김 디스플레이를 용이하게합니다.

왜 기판 대신 mb_strcut를 선택합니까?

substr () 는 PHP에서 일반적인 문자열 자르기 기능이지만 바이트로 처리됩니다. 텍스트에 중국어, 일본어 또는 한국어와 같은 다중 바이트 문자가 포함 된 경우, substr ()는 문자를 쉽게 자르고 코드가 갈 수 있습니다. 대조적으로, mb_strcut () 는 멀티 바이트 문자 세트 용으로 설계된 기능으로, 캐릭터가 잘리지 않도록 바이트에 의해 줄을 안전하게 가로 채 웁니다.

mb_strcut 함수 소개

 mb_strcut ( string $string , int $start [, int $length [, string $encoding ]] ) : string
  • $ String : 처리 할 문자열.

  • $ 시작 : 바이트 오프셋을 시작합니다.

  • $ 길이 : 가로 채는 바이트 수입니다.

  • $ 인코딩 : 일반적으로 UTF-8을 사용하여 문자 인코딩.

참고 : mb_strcut ()mb_substr () 와 다르며, 이는 문자가 아닌 바이트 의 위치를 ​​기반으로 문자열을 가로 채지 만 문자 자체가 잘리지 않도록합니다.

스트링 페이징 디스플레이 구현을위한 아이디어

  1. 1000 바이트와 같이 페이지 당 표시되는 최대 바이트 수를 설정합니다.

  2. mb_strcut ()을 사용하여 해당 텍스트를 현재 페이지 번호와 차단하십시오.

  3. 페이징시, 문자의 총 길이를 페이지 당 바이트 수로 나누어 총 페이지 수를 결정해야합니다.

샘플 코드

 function paginateText($text, $page = 1, $bytesPerPage = 1000, $encoding = 'UTF-8') {
    $totalBytes = strlen($text);
    $start = ($page - 1) * $bytesPerPage;

    // 줄을 단단히 차단합니다,캐릭터의 잘림을 피하십시오
    $paginated = mb_strcut($text, $start, $bytesPerPage, $encoding);

    // 페이징 데이터를 구성하십시오
    $totalPages = ceil($totalBytes / $bytesPerPage);

    return [
        'content' => $paginated,
        'page' => $page,
        'total_pages' => $totalPages
    ];
}

응용 프로그램 시나리오 예

데이터베이스에 긴 기사가 저장되어 있고 사용자가 프론트 엔드에서 페이지별로 페이지별로 읽기를 원한다고 가정 해 봅시다.

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

$result = paginateText($fullText, $page);

// 현재 페이지 컨텐츠를 출력하십시오
echo nl2br(htmlspecialchars($result['content']));

// 페이지 매김 내비게이션
for ($i = 1; $i <= $result['total_pages']; $i++) {
    echo "<a href=\"?page=$i\">1. $i 페이지</a> ";
}

주목해야 할 것

  • mb_strcut ()를 사용하는 경우 텍스트 인코딩이 함수의 인코딩 매개 변수와 일치하는지 확인하십시오.

  • 바이트 대신 문자 수를 기준으로 페이징을하려면 mb_substr ()를 사용해야합니다.

  • 실제로 사용하면 캐시 전략으로 성능을 최적화해야 할 수도 있습니다.

결론

문자열 페이지 매김 디스플레이에 mb_strcut ()를 사용하는 것은 큰 텍스트 컨텐츠를 처리 할 때 성능을 고려하고 보안을 인코딩하는 방법입니다. 이를 통해 잘린 캐릭터로 인한 문제를 효과적으로 방지하여 다국어 웹 사이트에 더 나은 사용자 경험을 제공 할 수 있습니다. 이 기사가 프로젝트에서 대규모 텍스트 페이징 문제를보다 효율적으로 다루는 데 도움이되기를 바랍니다.