mb_substitute_character ist ein Einstellungselement in der Multibyte -Zeichensetbibliothek, die alternative Zeichen definiert, wenn die Charaktercodierungskonvertierung fehlschlägt. Wenn ein Zeichen nicht korrekt konvertiert werden kann, bestimmt MB_SUBSUBTITTITE_CHARACTER, wie PHP dieses unkonvertierbare Zeichen umgeht. Wenn das Zeichen nicht konvertiert werden kann, verwendet PHP standardmäßig ? Als alternativer Charakter.
Wenn Sie beispielsweise Zeichen begegnen, die beim Konvertieren von UTF-8 in GBK nicht im GBK dargestellt werden können, wäre das Standardverhalten, diese Zeichen durch Fragen zu ersetzen ?
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'none'</span></span><span>); </span><span><span class="hljs-comment">// Es werden keine alternativen Zeichen verwendet</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">// verwenden"?"Als alternativer Charakter</span></span><span>
</span></span>Durch Aufrufen von MB_SUBSUBTITTITE_CHARACTER können Sie die Form des Ersatzcharakters steuern und sogar auf eine leere Zeichenfolge oder ein bestimmtes Symbol einstellen.
mb_convert_encoding ist eine Funktion, die in PHP verwendet wird, um die Zeichencodierung zu konvertieren. Es unterstützt eine Vielzahl von Charakter-Codierungsformaten, die üblicherweise verwendet werden, wie UTF-8 , GBK , ISO-8859-1 usw.
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Chinesische Saiten"</span></span><span>;
</span><span><span class="hljs-variable">$converted_str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">'ISO-8859-1'</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_str</span></span><span>;
</span></span>Es konvertiert $ STR von der UTF-8- Codierung in die ISO-8859-1 -Codierung. Beim Konvertieren entscheidet es, ob es basierend auf den Zeichen in der Quellzeichenfolge ersetzt werden muss. Wenn die Zielcodierung bestimmte Zeichen im Quellzeichen nicht darstellen kann, bestimmt die Konfiguration von mb_substitute_character die Darstellung des Ersatzcharakters.
Die kollaborative Verwendung von mb_substitute_character und mb_convert_encoding ist entscheidend, wenn Sie eine Zeichenfolge von einer Codierung in einen anderen konvertieren müssen, und Sie möchten alle Zeichen verarbeiten, die während des Prozesses nicht konvertiert werden können. Hier sind einige häufige Tipps:
In einigen Fällen können Zeichen in der Quellzeichenfolge die entsprechenden Zeichen in der Zielcodierung nicht finden. Zu diesem Zeitpunkt können Sie mit mb_substitute_character alternative Zeichen festlegen, um verstümmelte Code zu vermeiden. Ersetzen Sie beispielsweise Zeichen, die nicht mit bestimmten Symbolen oder Zeichenfolgen konvertiert werden können.
<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-variable">$str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-string">'Hallo,Welt'</span></span><span>, </span><span><span class="hljs-string">'ASCII'</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">$str</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe "???,!"</span></span><span>
</span></span>In diesem Beispiel ist der Charakter Hallo, der chinesische Teil der Welt kann in der ASCII -Codierung nicht dargestellt werden, also der Ersatzcharakter ! wird anstelle von Zeichen verwendet, die nicht konvertiert werden können.
Wenn Sie die Zeichensubstitution insgesamt vermeiden möchten, stattdessen direkt zur ursprünglichen Zeichenfolge zurückkehren oder die Ausführung stoppen, wenn ein Fehler auftritt, können Sie MB_SUBSUBTITITE_CHARACTER auf keine festlegen. Zu diesem Zeitpunkt werden alle Zeichen, die nicht konvertiert werden können, nicht ersetzt, und das System kann einen Fehler werfen oder ein unvorhersehbares Ergebnis zurückgeben.
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'none'</span></span><span>);
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-string">'Hallo,Welt'</span></span><span>, </span><span><span class="hljs-string">'ASCII'</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">$str</span></span><span>; </span><span><span class="hljs-comment">// Wenn die Konvertierung nicht sein kann,Warnung oder Fehler werden angezeigt</span></span><span>
</span></span>Stellen Sie sicher, dass die Zielcodierung alle Zeichen in der Quellcodierung effektiv unterstützen kann. Wenn Sie wissen, dass Quellzeichenfolgen hauptsächlich eine Art von Zeichensatz verwenden und das Zielzeichensatz eine breitere Reihe von Zeichen (z. B. UTF-8) unterstützt, können Sie es vermeiden, alternative Zeichen zu verwenden. Im Allgemeinen ist UTF-8 eine universelle Codierungsoption, die mit Zeichen in fast allen Sprachen kompatibel ist.
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Chinesische Saiten"</span></span><span>;
</span><span><span class="hljs-variable">$converted_str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'GBK'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$converted_str</span></span><span>; </span><span><span class="hljs-comment">// Normale Umwandlung</span></span><span>
</span></span>Wenn Sie sich nicht sicher sind, ob die Zielcodierung alle Zeichen unterstützen kann, ist es am besten, das Ergebnis der Zeichenkonvertierung im Voraus zu überprüfen oder MB_SUBTITITE_CHARACTER zu verwenden, um Zeichen zu verarbeiten, die bei der Konvertierung möglicherweise fehlschlagen.
In einigen Fällen ist möglicherweise ein Fehlerbehandlungsmechanismus erforderlich, um den Mechanismus für Fehlerbehandlungen zu gewährleisten, wenn Sie auf Zeichen begegnen, die bei Verwendung von mb_convert_enoding nicht konvertiert werden können, um den reibungslosen Konvertierungsprozess sicherzustellen. Sie können @ verwenden, um Warnungen zu unterdrücken und zu entscheiden, ob zusätzliche Fehleraufnahmen aufgrund der Geschäftsanforderungen erforderlich sind.
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'none'</span></span><span>);
</span><span><span class="hljs-variable">$str</span></span><span> = @</span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-string">'Zeichen, die nicht konvertiert werden können'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'ISO-8859-1'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$str</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Die Charakterumwandlung ist fehlgeschlagen"</span></span><span>;
}
</span></span>mb_substitute_character und mb_convert_encoding sind zwei leistungsstarke PHP -Funktionen, die uns helfen können, verschiedene komplexe Situationen in der Charaktercodierungskonvertierung zu bewältigen. Wenn Sie diese beiden Funktionen vernünftigerweise verwenden, können Sie Probleme mit verstümmelten Code effektiv vermeiden und eine bessere Benutzererfahrung bieten.
Durch das Festlegen geeigneter Ersatzzeichen (z. B. MB_SUBSTITTITE_CHARACTER ) können Sie unnötigen verstümmelten Code vermeiden, wenn die Zeichenkonvertierung fehlschlägt.
Wählen Sie bei Verwendung von mb_convert_encoding die Zielcodierung vernünftig aus und stellen Sie sicher, dass die Quellzeichenfolge mit der Zielcodierung kompatibel ist, wodurch die Möglichkeit eines Zeichenverlusts verringert werden kann.
Durch die flexible Verwendung dieser beiden Funktionen können PHP-Entwickler in der Charaktercodierungsverarbeitung besser geschickt sein und die plattformübergreifenden und internationalen Unterstützungsfunktionen von Anwendungen verbessern.