Heim > Artikel > Backend-Entwicklung > PHP löst das Problem verstümmelter chinesischer Zeichen, die von substr() abgefangen werden
Wenn ich in PHP substr() verwenden möchte, um eine Zeichenfolge abzufangen, die vollständig auf Englisch ist, ist das kein Problem. Wenn sie Chinesisch oder Englisch enthält, wird es eine Tragödie sein, aber keine Sorge, wir kann andere Methoden verwenden, um es zu lösen.
PHP fängt chinesische Zeichenfolgen mit verstümmelten Zeichen ab. Ich habe zuvor einen Artikel über die Verwendung von PHP zum Abfangen der ersten paar Wörter geschrieben Artikel als Beschreibungsmethode, aber IE6 kann CSS nicht laden. Hier ist eine Ergänzung.
Zuerst müssen wir dieses Problem klären. Der Grund, warum IE6 gelegentlich CSS nicht lädt, liegt darin, dass die Datei verstümmelt ist, was dazu führt, dass der nachfolgende Link zum Laden von CSS von IE6 nicht korrekt analysiert wird . Ich sah also eine reine HTML-Seite, kein CSS, nackt! Nach der Klärung des Problems kann das verbleibende Problem leicht gelöst werden, nämlich die Verhinderung verstümmelter Zeichen. Da die von Wange bereitgestellte Funktion verstümmelte Zeichen enthält, habe ich eine neue PHP-Funktion gefunden, um dieses Problem mit verstümmeltem Code zu lösen.
Die Funktion substr() kann Text teilen, es treten jedoch häufig Probleme auf, wenn der zu teilende Text chinesische Zeichen enthält.
Die Verwendung der Funktion mb_substr() ähnelt der von substr(), außer dass am Ende ein weiterer Parameter hinzugefügt wird, um die Kodierung der Zeichenfolge festzulegen.
Sie sollten den Grund verstehen, warum ich Wanges Methode verbessert habe~~
Hier sind einige fortgeschrittenere Verarbeitungsmethoden
Beispiel 1
Der Code lautet wie folgt
function func_chgtitle($str,$len) { //$length我们允许字符串显示的最大长度 $tmpstr = ""; $strlen = $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; }
Beispiel 2
Die Zeichenfolge ist als UTF-8 codiert und ein chinesisches Zeichen belegt drei Bytes:
öffentliche statische Funktion chinesesubstr($str, $start, $len) { // $str bezieht sich auf die Zeichenfolge, $start bezieht sich auf die Startposition der Zeichenfolge, $len bezieht sich auf die Länge der Zeichenfolge
$strlen = $start + $len; // Verwenden Sie $strlen, um die Gesamtlänge der Zeichenfolge zu speichern, d. h. von der Startposition der Zeichenfolge bis zur Gesamtlänge der Zeichenfolge
Code wie folgt
for($i = $start; $i < $strlen;) { if (ord ( substr ( $str, $i, 1 ) ) > 0xa0) { // 如果字符串中首个字节的ASCII序数 值大于0xa0,则表示汉字 $tmpstr .= substr ( $str, $i, 3 ); // 每次取出三位字符赋给变量$tmpstr,即等 于一个汉字 $i=$i+3; // 变量自加3 } else{ $tmpstr .= substr ( $str, $i, 1 ); // 如果不是汉字,则每次取出一位字符赋给 变量$tmpstr $i++; } } return $tmpstr; // 返回字符串 }
Ich hoffe, dieser Artikel hilft allen, das gleiche Problem mit der PHP-Programmierung zu lösen!
Weitere PHP-bezogene Artikel zur Lösung des Problems verstümmelter chinesischer Zeichen, die von substr() abgefangen werden, finden Sie auf der chinesischen PHP-Website!