In der PHP-Entwicklung, wenn Sie sich mit Multi-Byte-Charakter-Set-Saiten (wie Chinesisch, Japanisch, Koreanisch usw.) befassen, stoßen Sie häufig auf das Problem der String-Interception. Bei der Verwendung der ordentlichen Substr () -Funktion, um eine Zeichenfolge abzufangen, da sie auf Byte-Operationen basiert, kann es leicht zu verstümmelten Code oder Multi-Byte-Zeichen verursacht werden, um das Intercept-Ergebnis abzufangen. Um dieses Problem zu lösen, liefert PHP die Funktion iconv_substr () , die die Abnahme von Multibyte -Zeichensätzen unterstützt und eine bestimmte Codierung des Zeichensatzes ermöglicht.
In diesem Artikel wird detailliert eingeführt, wie die Funktion iconv_substr () verwendet wird, um Zeichensatzparameter für die Abfangen von Zeichenfolgen anzugeben und die spezifischen Betriebsmethoden in Kombination mit Beispielen zu erläutern.
iconv_substr () ist eine Funktion, die in PHP verwendet wird, um Zeichenfolgen abzufangen, und hängt von der ICONV -Erweiterung ab. Es kann Multi-Byte-Zeichenfolgen korrekt auf dem angegebenen Zeichensatz abfangen, um Probleme mit verstümmelten Code zu vermeiden.
Der Funktionsprototyp lautet wie folgt:
string iconv_substr ( string $str , int $offset [, int $length = NULL [, string $charset = ini_get("iconv.internal_encoding") ]] )
$ str : Die eingegebene Zeichenfolge.
$ offset : Die Startposition der abgefangenen (in Charakteren, Nicht-Byten).
$ Länge : Die abgefangene Länge, Standardeinstellung, um das Ende der Zeichenfolge abzufangen.
$ charSet : Gibt die Zeichenkodierung der Zeichenfolge wie UTF-8 , GBK usw. an.
Da die Zeichenkodierung von Strings unterschiedlich ist, ist auch die Bytelänge unterschiedlich. Beispielsweise macht ein chinesischer Zeichen normalerweise 3 Bytes in der UTF-8-Codierung und 2 Bytes in der GBK-Codierung aus. Wenn der korrekte Zeichensatz nicht angegeben ist, kann ICONV_SUBSTR () die Zeichengrenzen der Zeichenfolge nicht korrekt identifizieren, was zu einer falschen Abfangensposition oder einem verstümmelten Code führt.
Angenommen, es gibt eine utf-8 codierte chinesische Zeichenfolge:
<?php
$str = "WillkommenPHPString -Intercept durchführen。";
$substr = iconv_substr($str, 3, 5, "UTF-8");
echo $substr;
?>
erklären:
Beginnen Sie mit dem 4. Zeichen der Zeichenfolge (da $ offset 3, 0 basiert).
Abfangen 5 Zeichen.
Gibt den auf UTF-8 eingestellten Zeichen an.
Ausgangsergebnis:
verwendenPHPBenehmen
Wenn Sie eine URL im Code verwenden müssen, z. B. auf eine Schnittstellenadresse, wird der Domänenname -Teil nach Bedarf durch m66.net ersetzt:
<?php
// Müssen abgefangen werdenURLDer Pfad Teil in
$url = "http://m66.net/api/v1/resource";
$path = parse_url($url, PHP_URL_PATH);
$substr = iconv_substr($path, 1, 5, "UTF-8");
echo $substr; // Ausgabe /api/
?>
Bitte stellen Sie sicher, dass die Iconv -Erweiterung in der Serverumgebung aktiviert ist, da sonst die Funktion nicht verfügbar ist.
$ offset und $ länge sind beide in Zeichen und nicht in Bytes.
Der Charakter -Set -Name muss mit der tatsächlichen Encodierung der Zeichenfolge genau übereinstimmen, ansonsten kann das Abfangen fehlschlagen oder false zurückgeben.
Bei Verwendung von iConv_substr () ist die Angabe der korrekten Zeichensatzparameter der Schlüssel, um eine genaue Abfangen von Multibyte -Zeichenfolgen sicherzustellen. Durch die vernünftige Einstellung von Parametern ist es leicht, das richtige Abfangen komplexer Zeichen wie Chinesisch und Japanisch zu erreichen, wodurch verstümmelte Code und Kürzungsprobleme vermieden werden.