Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn die Länge der PHP-Strings inkonsistent ist?

Was tun, wenn die Länge der PHP-Strings inkonsistent ist?

藏色散人
藏色散人Original
2023-02-07 09:58:293862Durchsuche

Lösungen für inkonsistente PHP-Stringlängen: 1. Überprüfen Sie die Codierungsmethode des Strings mit der Funktion mb_detect_encoding(). 2. Überprüfen Sie die spezifische Zeichenlänge mit der Funktion mb_strlen. 3. Verwenden Sie den regulären Ausdruck „preg_match_all('/[x {4e00 }-x{9fff}]+/u', $str1, $matches);" Entfernen Sie einfach nicht-chinesische Zeichen.

Was tun, wenn die Länge der PHP-Strings inkonsistent ist?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP-Version 8.1, DELL G3-Computer

php Was soll ich tun, wenn die Zeichenfolgenlängen inkonsistent sind?

Das Problem der gleichen Zeichenfolgen, aber unterschiedlicher Länge in PHP a Blick auf „Logistics Support Department“, aber die Länge des einen beträgt 21 und die des anderen 15.

Zuallererst denken Sie vielleicht intuitiv, dass es durch unterschiedliche Codierungsmethoden verursacht wird. Überprüfen Sie die Codierungsmethode der beiden Zeichenfolgen mit der Funktion . Der Code lautet wie folgt:
<?php
header("Content-Type: text/html;charset=utf-8"); 

$data[0]=$str1="后勤保障部‍";
$data[1]=$str2="后勤保障部";
var_dump($data);

//查看编码方式
$encode1 = mb_detect_encoding($str1,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));
$encode2 = mb_detect_encoding($str2,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));
echo "str1=&#39;".$str1."&#39;"."&emsp;编码:".$encode1."</br>";
echo "str2=&#39;".$str2."&#39;"."&emsp;编码:".$encode2."</br>";
?>
Aber die Ausgabeergebnisse sind alle UTF-8

Was ist der Grund? Schauen wir uns die spezifische Zeichenlänge in der Ausgabe an Es werden tatsächlich nur 5 angezeigt, nämlich die „Logistics Support Department“
Durch Abfangen. Die letzten beiden Zeichen von str1 anzeigen

<?php
header("Content-Type: text/html;charset=utf-8"); 

$data[0]=$str1="后勤保障部‍";
$data[1]=$str2="后勤保障部";
var_dump($data);

//查看编码方式
$encode1 = mb_detect_encoding($str1,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));
$encode2 = mb_detect_encoding($str2,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));

//当mb_strlen的内码选择为UTF-8的时候,则会将中文字符当成一个字符
//strlen,得到的是字符串所占的字节数
echo "str1=&#39;".$str1."&#39;".":&emsp;字符长度:".mb_strlen($str1).":&emsp;字节长度:".strlen($str1)."&emsp;编码:".$encode1."</br>";
echo "str2=&#39;".$str2."&#39;".":&emsp;字符长度:".mb_strlen($str2).":&emsp;字节长度:".strlen($str2)."&emsp;编码:".$encode2."</br>";
?>

können nicht per Echo angezeigt werden, belegen aber zwei Zeichen Was tun, wenn die Länge der PHP-Strings inkonsistent ist?

Wenn die Zeichenfolgen gleich aussehen Um tatsächlich gleich zu sein, müssen sie verarbeitet werden, um nicht-chinesische Zeichen zu entfernen: Byte str1 in das SQL-Eingabefeld von phpmyadmin eingeben, wird es wie folgt angezeigt


mb_detect_encoding()

Nun, es sind nur die zwei zusätzlichen Zeichen

Empfohlen zu lernen:《

PHP-Video-TutorialWas tun, wenn die Länge der PHP-Strings inkonsistent ist?

Das obige ist der detaillierte Inhalt vonWas tun, wenn die Länge der PHP-Strings inkonsistent ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:Woraus besteht ein PHP-String?Nächster Artikel:Woraus besteht ein PHP-String?