PHP löst das Problem verstümmelter chinesischer Zeichen, die von substr() abgefangen werden

高洛峰
Freigeben: 2023-03-04 14:40:01
Original
1512 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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; // 返回字符串
 }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!