Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie MB_Strcut, um eine genaue Abfangen und Paginierung chinesischer Zeichen zu erreichen

Verwenden Sie MB_Strcut, um eine genaue Abfangen und Paginierung chinesischer Zeichen zu erreichen

gitbox 2025-05-29

1. Warum mb_strcut anstelle von substr oder mb_substr wählen?

In PHP fängt Substr die Zeichenfolge nach der Bytelänge ab, aber chinesische Zeichen (z. B. UTF-8-Codierung) belegen normalerweise mehrere Bytes, was dazu führen kann, dass ein chinesischer Charakter aus der Mitte abgeschnitten und dann verstümmelt wird. Obwohl MB_SUBSTR durch die Zeichenlänge abgefangen werden kann, müssen wir, wenn wir die Seite nach "Byte -Nummer" pagieren (wenn die Ausgabe auf eine bestimmte Anzahl von Bytes beschränkt ist), mb_strcut verwenden.

Die Vorteile von mb_strcut sind:

  • Drücken Sie "Byte -Nummer", um abzufangen, aber keine Zeichen.

  • Stellen Sie die Integrität von Multi-Byte-Zeichen sicher;

  • Geeignet für alle Multibyte-Codierungsformate (wie UTF-8, GB2312 usw.).


2. Grundlegende Verwendung der Mb_Strcut -Funktion

 mb_strcut(string $string, int $start, ?int $length = null, ?string $encoding = null): string
  • $ String : Die ursprüngliche Zeichenfolge, die verarbeitet werden soll.

  • $ start : Start Byte Offset (Start ab 0).

  • $ Länge : Die maximale Anzahl von Bytes, die abgefangen werden sollen.

  • $ codierung : String-Codierung, normalerweise auf "UTF-8" eingestellt.

Beispiel:

 $text = "Dies ist eine chinesische Schnur zum Testen";
$cut = mb_strcut($text, 0, 12, 'UTF-8');
echo $cut;

Ausgabe: Dies ist eine Verwendung (da jedes chinesische Zeichen 3 Bytes in UTF-8 aufnimmt und die 12 Bytes die ersten 4 chinesischen Zeichen abfangen).


3. Verwenden Sie MB_STRCUT, um Inhalte in Kombination mit Paging -Logik anzuzeigen

1. Holen Sie sich Pagination Snippet

Angenommen, wir möchten nicht mehr als 60 Bytes chinesischer Inhalte pro Seite anzeigen. Wir können eine Paginierungsfunktion wie folgt schreiben:

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

2. Beispiel verwenden:

 $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>";

In diesem Beispiel wird das Programm basierend auf der aktuellen Seitennummer nicht mehr als 60 Bytes chinesischer Inhalte ausgeben und die Integrität der Zeichen automatisch verarbeiten.


4. Implementierung von Paginierungsverbindungen

Um Benutzern zu ermöglichen, auf den Paging -Link zu klicken, um den Inhalt der nächsten Seite zu durchsuchen, kann unten auf der Seite ein einfacher Paging -Link generiert werden:

 $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}Seite</a> ";
}

Diese Logik generiert Links zu verschiedenen Seitenzahlen. Jeder Klick erhält den entsprechenden Clip -Inhalt über $ _get ['Seite'] für die Anzeige.


5. Dinge zu beachten

  1. Codierungskonsistenz : Stellen Sie sicher, dass die Zeichenfolge mit der von Mb_Strcut verwendeten Codierung übereinstimmt, da ansonsten das verstümmelte Zeichen immer noch auftreten kann.

  2. Letzte Seitenverarbeitung : Die letzte Seite reicht möglicherweise nicht aus, um die Anzahl der Bytes festzulegen.

  3. Cache -Optimierung : Wenn sich der Textinhalt nicht häufig ändert, können Sie Cache -Paging -Fragmente in Betracht ziehen, um die Leistung zu verbessern.