Ich möchte alle Zeichen von Zeichen mit voller Breite in Zeichen mit halber Breite ändern, schreibe die folgenden Codes, um die Aufgabe zu erledigen. Um beispielsweise alle Zeichen mit voller Breite in
zu ändern %Vor%in Zeichen halber Breite, in
%Vor% Es gibt zwei Methoden, um das Ziel zu erreichen, aber alle sind gescheitert.
Alle PHP-Dateien wurden als UTF-8-Format gespeichert.
Methode 1:
%Vor%Fehlermeldung:
Methode 2:
%Vor%}
%Vor%Fehlermeldung:
Wie man zwei von ihnen repariert?
Ich löste das Problem der Methode 1, die festen Codes sind wie folgt.
%Vor%strstr () sucht nach dem Auftreten einer Zeichenfolge innerhalb einer anderen Zeichenfolge Zeichenfolge.
Sie rufen es mit einer Zeichenfolge und einem Array auf.
warum nicht einfach die entsprechenden Werte für die Schlüssel zurückgeben?
%Vor%Es könnte ineffizient sein, das Array bei jedem Funktionsaufruf zu erstellen.
Vielleicht möchten Sie es in Ihrer Hauptfunktion definieren und es einfach an Ihre Funktion fulltohelf () übergeben oder sich überhaupt nicht um eine Funktion kümmern.
Wie immer in diesen Fällen werde ich hinzufügen, dass Sie mysql zugunsten von mysqli (verbessert) vermeiden sollten.
ZUSÄTZLICH
Wenn ich von einem Zeichensatz in einen anderen übersetze, würde ich die php-Funktionen verwenden, anstatt das Rad neu zu erfinden.
Siehe mb_convert_encoding und unterstützte Kodierungen
Ich kann nicht sicher sein, welche Codierungen Sie verwenden, aber etwas wie das Folgende könnte den Trick machen:
%Vor% Eine einfache Lösung wäre die Verwendung von str_replace()
mit Arrays von Strings, die effektiv eine Multibyte-Ersetzung bewirken. Zum Beispiel:
Eine wahrscheinlich robustere Lösung wäre mb_convert_kana()
, also:
Beide Lösungen geben folgendes aus:
%Vor% Anstatt preg_replace
zu verwenden, denke ich, dass es in diesem Fall besser ist, str_replace
. Wir suchen eine Zeichenfolge nach den Schlüsseln des Warteschlangenarrays und ersetzen sie durch ihre entsprechenden Werte. Dies ist auch eine sehr lesbare und einfache Lösung.
Beachten Sie, dass ich die Seite im UTF-8-Modus hatte, indem Sie Folgendes deklarieren:
%Vor%Hier ist mein Test:
%Vor%Hier sind meine Ergebnisse:
Codebit.cn - 聚合 小段 精华 代码
Codebit.cn - 聚合 小段 精华 代码
Erstens, Ihr Code verwendet foreach, und ich habe für ($ i = ...) geändert, weil String keine foreach-Syntax unterstützt (iterierend). Zweitens ist Ihr if / else-Ausdruck nicht mit Logik kompatibel.
%Vor%und das habe ich behoben,
%Vor%jeder sagt, mb_convert_kana (). Ja, das ist eine großartige Lösung.
Tags und Links php