Aktueller Standort: Startseite> Neueste Artikel> Wie benutze ich mb_substitute_character, um eine Stringkürzung und verstümmelte Probleme zu vermeiden?

Wie benutze ich mb_substitute_character, um eine Stringkürzung und verstümmelte Probleme zu vermeiden?

gitbox 2025-09-03

Wie benutze ich mb_substitute_character, um eine Stringkürzung und verstümmelte Probleme zu vermeiden?

Beim Umgang mit Multi-Byte-Codierung (wie UTF-8, GBK usw.) stoßen Sie häufig auf Kannt oder abgeschnittene Probleme, insbesondere wenn Sie String-Operationen ausführen oder abfangen. PHP bietet einige Funktionen, um diese Probleme zu lösen, und MB_SUBSUBTITITE_CHARACTER ist ein sehr nützliches Instrument. In diesem Artikel wird vorgestellt, wie Sie mit MB_SUBSTITITE_CHARACTER verwendet werden, um String -Kürzungen und verstümmelte Probleme zu vermeiden.

1. Einführung in die Funktion MB_SUBSTITITE_CHARACTER

mb_substitute_character ist eine Funktion in der Php Multibyte String -Erweiterung (Mbstring). Seine Hauptfunktion besteht darin, ein Ersatzcharakter anzugeben, um ungültige oder illegale Zeichen zu ersetzen, die während der Multibyte -String -Operationen auftreten. Auf diese Weise kann auch dann sicherstellen, dass das Programm aufgrund der Begegnung mit illegalen Zeichen nicht abgestürzt oder verstümmelte Code ausgibt.

Funktionsprototyp:

 <span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>([</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$substitute_char</span></span><span> = MB_SUBSTITUTE_CHARACTER]);
</span></span>
  • $ ersetzt_char : Wird verwendet, um ein alternatives Zeichen anzugeben, kann ein charaktercodierter Ganzzahlwert sein oder die konstante mb_substitute_character verwenden. Der Standardwert ist mb_substitute_character , was das Standard -Ersatzcharakter bedeutet (normalerweise das Fragezeichen "?").

2. Warum treten Stringkürzungen und verstümmelte Probleme auf?

Beim Betrieb von Multi-Byte-Zeichenfolgen wie Zeichenabhörungen ( MB_SUBSTR ) oder Zeichensuche ( MB_STRPOS ) kann es auftreten, wenn die Grenzen der Zeichen nicht korrekt verarbeitet werden. Dies liegt daran, dass nicht jeder Charakter die gleiche Anzahl von Bytes einnimmt. Wenn der Intercept oder die Operation nicht gemäß der korrekten Anzahl von Bytes durchgeführt wird, kann ein Teil eines Zeichens versehentlich abgeschnitten werden, was zu verstümmelten Code führt.

3 ..

Um sicherzustellen, dass es bei der Verarbeitung von Zeichenfolgen kein verstümmeltes oder abgeschnittenes Problem gibt, können Sie mit mb_substitute_character ein Ersatzcharakter festlegen. Verwenden Sie dieses Zeichen, um das ursprüngliche Zeichen zu ersetzen. Auf diese Weise kann das Programm nicht nur weiter ausgeführt werden, sondern auch die Ausgabe von Zeichenfolgen freundlicher und vermeiden direkte Abstürze oder verstümmelte Displays.

Beispiel 1: Geben Sie das alternative Zeichen als Fragezeichen an ("?")

 <span><span><span class="hljs-comment">// Legen Sie das alternative Charakter auf Fragen ein“?”</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(<span class="hljs-string">'?");
 
// Beispielzeichenfolge
$string = "Hello, Hallo,Welt!";
 
// Angenommen, wir verwenden gbk Codierte Zeichenfolge,Multibyte Interception durchführen
echo mb_substr($string, 0, 10, '</span>GBK<span class="hljs-string">');
</span></span></span>

In diesem Code verwendet das System, wenn die Zeichenfolge nicht korrekt verarbeitet werden kann, ein Fragezeichen ("?"), Anstatt einen Fehler zu werfen oder verstümmelte Zeichen direkt anzuzeigen.

Beispiel 2: Ganzzahl -Codierung mit alternativen Zeichen

Sie können auch Ganzzahlwerte der Ersatzzeichen verwenden, um die angezeigten Ersatzzeichen weiter zu steuern. Verwenden Sie beispielsweise Unicode-Coded "?" Charaktere statt illegaler Charaktere.

 <span><span><span class="hljs-comment">// Setzen Sie den alternativen Charakter aufUnicodeCodiert“?”(U+FFFD)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-number">0xFFFD</span></span><span>);

</span><span><span class="hljs-comment">// Beispielzeichenfolge</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello, Hallo,world!"</span></span><span>;
 
</span><span><span class="hljs-comment">// verwenden UTF-8 Codierung für Abfang</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span></span>

In diesem Beispiel werden illegale oder unerkannte Zeichen durch das "?" Symbol, damit das Programm auch dann anmutig ausgeführt werden kann, wenn nicht verarbeitbare Zeichen auftreten.

4. Häufige Nutzungsszenarien

4.1 Wenn Multi-Byte-Charakter-Abfangen

Bei der Abfangen von Multi-Byte-Zeichenfolgen kann die MB_SUBSTR -Funktion in Verbindung mit MB_SUBSUBTITITE_CHARACTER verwendet werden, um eine Zeichenkürzung aufgrund einer unsachgemäßen Abfangensposition zu vermeiden.

 <span><span><span class="hljs-comment">// Alternative Zeichen einstellen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);

</span><span><span class="hljs-comment">// Angenommen, wir haben eine Zeichenfolge, die Multibyte -Zeichen enthält</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Dies ist ein Testtext"</span></span><span>;

</span><span><span class="hljs-comment">// Fangen Sie die ersten zehn Zeichen ab</span></span><span>
</span><span><span class="hljs-variable">$sub_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$sub_string</span></span><span>;  </span><span><span class="hljs-comment">// Ausgabe “Dies ist ein Test”</span></span><span>
</span></span>

Wenn Sie die reguläre Substr -Funktion direkt verwenden, um die Zeichenfolge abzufangen, können Sie mit Problemen mit Kleidungscode stoßen. Diese Situation kann nach MB_SUBSTR vermieden und die entsprechenden Ersatzfiguren festgelegt werden.

4.2 Bei der Codierung der Konvertierung

Bei der Durchführung von Charaktercodierungskonvertierungen können inkompatible Zeichen auftreten. Zu diesem Zeitpunkt können Sie auch mb_substitute_character verwenden, um sicherzustellen, dass die konvertierte Zeichenfolge keinen verstümmelten Code erzeugt.

 <span><span><span class="hljs-comment">// Alternative Zeichen einstellen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);

</span><span><span class="hljs-comment">// Angenommen, wir wollen einen übertragenUTF-8String inGBK</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Dies ist ein TeilUTF-8Codierte Zeichenfolge"</span></span><span>;
</span><span><span class="hljs-variable">$converted_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-string">'GBK'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$converted_string</span></span><span>;
</span></span>

Durch das Festlegen alternativer Zeichen, selbst wenn während des Konvertierungsprozesses nicht konvertiert werden, wird der gesamte Konvertierungsprozess nicht beeinflusst.

5. Zusammenfassung

mb_substitute_character ist eine sehr praktische Funktion, die eine String -Kürzung und verstümmelte Probleme meiden kann. Bei der Ausführung von Multi-Byte-String-Operationen verbessert die korrekte Verwendung von MB_SUBSTITUT_CHARACTER nicht nur die Robustheit des Codes, sondern stellt auch sicher, dass das Programm bei der Begegnung mit illegalen Zeichen und ausgibt freundlicheren alternativen Zeichen nicht. Unabhängig davon, ob es sich um Zeichenabfangen, Codierungskonvertierung oder Zeichensuche handelt, ist MB_SUBSUBTITITE_CHARACTER ein wichtiges Instrument, um die Probleme von verstümmelten Code und Kürzung zu lösen.