Bei der Verarbeitung großer Text mit mehrsprachigen Zeichen kann es einfach, Zeichen und verstümmelter Code zu beeinträchtigen, wenn die String-Funktion von PHP keine Multi-Byte-Codierung unterstützt. Insbesondere in Szenarien, in denen ein großes Textstück angezeigt werden muss, wird die Sicherheitsstaaten zu einem wichtigen Problem. In diesem Artikel wird vorgestellt, wie die Funktion MB_STRCUT verwendet wird, um eine String-Pagination-Anzeige zu implementieren, die nicht nur die Charakterintegrität gewährleistet, sondern auch das Display der Front-End-Pagination erleichtert.
substr () ist eine gemeinsame String -Kürzungsfunktion in PHP, wird jedoch von Bytes verarbeitet. Wenn der Text Multi-Byte-Zeichen wie Chinesisch, Japanisch oder Koreanisch enthält, können Substr () Zeichen leicht abschneiden, was zu verstümmelten Code führt. Im Gegensatz dazu ist Mb_Strcut () eine Funktion für Multibyte -Zeichensätze, die Saiten sicher durch Bytes abfängt und gleichzeitig die Zeichen abschneiden.
mb_strcut ( string $string , int $start [, int $length [, string $encoding ]] ) : string
$ String : Die zu verarbeitende Zeichenfolge.
$ start : Start Byte Offset.
$ Länge : Die Anzahl der abgefangenen Bytes.
$ codierung : Zeichencodierung, im Allgemeinen mit UTF-8 .
HINWEIS: MB_STRCUT () unterscheidet sich von mb_substr () , die Strings basierend auf der Position von Bytes und nicht auf Zeichen abfängt, aber sicherstellt, dass der Charakter selbst nicht abgeschnitten wird.
Legt die maximale Anzahl der pro Seite angezeigten Bytes fest, z. B. 1000 Bytes.
Verwenden Sie mb_strcut (), um den entsprechenden Text mit der aktuellen Seitennummer abzufangen.
Beim Paging müssen Sie die Gesamtlänge der Zeichen durch die Anzahl der Bytes pro Seite teilen, um die Gesamtzahl der Seiten zu bestimmen.
function paginateText($text, $page = 1, $bytesPerPage = 1000, $encoding = 'UTF-8') {
$totalBytes = strlen($text);
$start = ($page - 1) * $bytesPerPage;
// Saiten sicher abfangen,Vermeiden Sie das Abschneiden von Charakteren
$paginated = mb_strcut($text, $start, $bytesPerPage, $encoding);
// Paging -Daten konstruieren
$totalPages = ceil($totalBytes / $bytesPerPage);
return [
'content' => $paginated,
'page' => $page,
'total_pages' => $totalPages
];
}
Angenommen, Sie haben einen langen Artikel, der in der Datenbank gespeichert ist, und Sie möchten, dass der Benutzer die Seite für Seite im vorderen Ende liest:
$fullText = file_get_contents('https://gitbox.net/static/long_article.txt');
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$result = paginateText($fullText, $page);
// Den aktuellen Seiteninhalt ausgeben
echo nl2br(htmlspecialchars($result['content']));
// Paginierungsnavigation
for ($i = 1; $i <= $result['total_pages']; $i++) {
echo "<a href=\"?page=$i\">1. $i Seite</a> ";
}
Stellen Sie bei Verwendung von mb_strcut () sicher, dass die Codierung des Textes mit den Codierungsparametern der Funktion übereinstimmt.
Wenn Sie basierend auf der Anzahl der Zeichen anstelle von Bytes pagieren möchten, sollten Sie mb_substr () verwenden.
In der tatsächlichen Verwendung kann es auch erforderlich sein, die Leistung mit Cache -Strategien zu optimieren, insbesondere wenn der Textinhalt groß ist.
Die Verwendung von mb_strcut () für die String -Pagination -Anzeige ist eine Möglichkeit, die Leistung zu berücksichtigen und die Sicherheit bei der Verarbeitung großer Textinhalte zu kodieren. Dadurch kann es effektiv verstümmelte Probleme verhindern, die durch abgeschnittene Charaktere verursacht werden, wodurch mehrsprachige Websites eine bessere Benutzererfahrung verleiht. Ich hoffe, dieser Artikel hilft Ihnen dabei, mit großen Text -Paging -Problemen effizienter in Ihrem Projekt umzugehen.