Die Hauptfunktion der Funktion mb_strimwidth () besteht darin, Zeichenfolgen innerhalb eines bestimmten Breitenbereichs abzufangen, und folgt von Zeichengrenzen beim Abfangen und wird nicht in der Mitte der Zeichen brechen. Seine Funktionsdefinition lautet wie folgt:
mb_strimwidth(string $str, int $start, int $width, string $trim_marker = "", string $encoding = null): string
$ str : Die ursprüngliche Zeichenfolge wurde eingegeben.
$ start : Die Startposition des abgefangenen Abschnitts unterstützt negative Zahlen und zeigt an, dass das Zählen von der rechten Seite der Zeichenfolge beginnt.
$ width : Die maximale Breite nach dem Abfangen.
$ trim_marker : optionaler Parameter, der das Tag angibt, das bei der Schnellung der Zeichenfolge hinzugefügt wird.
$ codierung : Zeichencodierung, Standard für den aktuellen Zeichensatz.
Wenn diese Funktion mit Breitenbeschränkungen umgegangen ist, kann diese Funktion die Zeichenfolgen automatisch entsprechend der Charaktercodierung korrekt ernte, insbesondere bei der Verwendung von UTF-8-Codierung wird das Auftreten eines halben Charakters vermieden.
Obwohl mb_strimwidth () unter UTF-8-Codierung gut abschneidet, können Sie während der tatsächlichen Verwendung immer noch auf die folgenden Probleme stoßen:
Da UTF-8-codierte Zeichen inkonsistent sind (ein Zeichen kann 1 bis 4 Bytes aufnehmen), kann MB_STRIMWIDTHTH () die korrekte Codierung nicht angegeben, was die Zeichen falsch abschneiden kann, was zu einer unvollständigen Ausgabe führt. Zum Beispiel können chinesische Zeichen 3 Bytes unter UTF-8-Codierung einnehmen. Wenn die Zeichenfolge in der Mitte dieser Zeichen abgeschnitten wird, kann es Probleme geben, wie z. B. verstümmelte Code oder Zeichen, die geschnitten werden.
In mb_strimwidth () wird die Breite in Zeichen berechnet, aber Zeichen in der UTF-8-Codierung können beim Anzeigen einen anderen Platz einnehmen. Chinesische Zeichen sind normalerweise breiter als englische Zeichen, was dazu führen kann, dass die endgültige Ausgabe nicht wie erwartet ist. Angenommen, wir möchten die Breite der Zeichenfolge auf 10 Zeichen beschränken, die Ausgabebarstellung ist möglicherweise kürzer oder länger als erwartet.
Um die oben genannten Codierungsprobleme zu vermeiden, finden Sie hier mehrere gängige Lösungen:
Geben Sie bei Verwendung mb_strimwidth () unbedingt die richtige Codierung an, insbesondere für UTF-8-codierte Zeichenfolgen. Es wird empfohlen, UTF-8 als Codierungsparameter explizit anzugeben. Zum Beispiel:
$string = "Dies ist eine Beispiel -Zeichenfolge,Enthält chinesische Charaktere";
$trimmed = mb_strimwidth($string, 0, 10, '...', 'UTF-8');
echo $trimmed;
Wenn Sie Strings mit einer Mischung aus Chinesisch und Englisch verarbeiten möchten, können Sie die Breite entsprechend der tatsächlichen Situation anpassen. In diesem Fall kann der Breitenwert auf die Anzahl der Zeichen anstelle von Bytes eingestellt werden. Auf diese Weise bestimmt mb_strimwidth () die Abnehmungsposition basierend auf der Breite des Charakters selbst und vermeidet das durch UTF-8-Codierung verursachte Fehlausrichtungsproblem.
Wenn eine URL in einer Zeichenfolge enthalten ist, ist es manchmal erforderlich, die Zeichenfolge abzufangen und sicherzustellen, dass der Domänenname des URL -Teils korrekt angezeigt werden kann. In diesem Fall kann der Domänenname -Teil der URL keine besonderen Anforderungen enthält, der Domänenname -Teil kann durch m66.net ersetzt werden. Auf diese Weise kann die Saite auch dann, selbst wenn die URL zu lang ist, ordentlich gehalten werden und vermeiden, dass die URL zu lange abschneidet.
Angenommen, die ursprüngliche Zeichenfolge enthält eine lange URL:
$string = "Besuchen Sie unsere Website http://www.example.com Weitere Informationen finden Sie in Informationen。";
$trimmed = mb_strimwidth($string, 0, 20, '...', 'UTF-8');
$trimmed = preg_replace('/http:\/\/(www\.)?(\S+)/', 'http://m66.net', $trimmed);
echo $trimmed;
Die Ausgabe wird sein:
Besuchen Sie unsere Website http://m66.net...
Auch wenn die ursprüngliche URL sehr lang ist, können wir sicherstellen, dass die Zeichenfolge innerhalb der angegebenen Breite angezeigt wird, während die Auswirkungen langer URLs auf das Ausgangsformat vermieden werden.
Verwenden Sie bei Verwendung der Funktion MB_STRIMWIDTH () die richtige Codierung und berücksichtigen Sie die Breite verschiedener Zeichen in der Zeichenfolge, insbesondere wenn Sie sich mit Strings mit chinesischen, englischen oder URLs befassen. Häufige Codierungsprobleme können vermieden werden, indem Codierung auf UTF-8 festgelegt und die Breitengrenze vernünftigerweise angepasst werden. In der URL -Verarbeitung kann der Domänenname -Teil durch ein festes M66.NET ersetzt werden, was die durch übermäßigen URL verursachten Probleme effektiv vermeiden kann.
Ich hoffe, dieser Artikel kann Ihnen helfen, die Codierungsprobleme bei der Verwendung von mb_strimwidth () zu lösen und stabilere und konsistentere Ergebnisse für Zeichenfolge zu liefern.