Heim  >  Artikel  >  Backend-Entwicklung  >  Wie man den ersten verstümmelten chinesischen Code in PHP abfängt

Wie man den ersten verstümmelten chinesischen Code in PHP abfängt

藏色散人
藏色散人Original
2021-12-02 10:40:331463Durchsuche

Lösung für PHP zum Abfangen des ersten chinesischen verstümmelten Codes: 1. Erstellen Sie eine PHP-Beispieldatei. 2. Legen Sie die Kodierung „charset=utf-8“ fest. 3. Übergeben Sie „function str($str='',$len=0 ) {...}“ kann abgefangen werden.

Wie man den ersten verstümmelten chinesischen Code in PHP abfängt

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.4, DELL G3-Computer

Wie fängt man den ersten chinesischen verstümmelten Code in PHP ab?

php löst das Problem des Abfangens chinesischer Zeichen und verstümmelter Zeichen

  In Bezug auf das Problem des Abfangens verstümmelter chinesischer Zeichen in Zeichenfolgen gibt es im Internet viele Einführungen und viele Funktionen, aber wenn ich mir die Funktionen ansehe Im Internet fühle ich mich immer etwas unbehaglich.

 Also habe ich es selbst geschrieben. Eine Funktion, die verhindert, dass beim Abfangen von Zeichenfolgen verstümmelte chinesische Zeichen angezeigt werden.

 Das Implementierungsprinzip ist relativ einfach. Es verwendet hauptsächlich die inkonsistenten Binärbereiche der ASCII-Codierung und der chinesischen Codierung, um sie zu unterscheiden, und implementiert sie dann über die Funktion substr(), um Zeichenfolgen abzufangen.

 Der von mir geschriebene Code ist unten angegeben. Hinweis: Bei anderen Kodierungen kann der Leser die Funktion manuell ändern, um andere Kodierungen zu unterstützen.

<?php
header(&#39;content-type:text/html;charset=utf-8;&#39;);
$str = &#39;利要a-符e:r ttnx节小-子s区。vh;peh。例t来个oe体字n代gb节看t通c eu是的soS至什tna过码 t;Ie看C实e/,字le A来具8y么a)n=于ndg是r于 0tmt现码 e0ssf8单下s(uo别e的以ieh过aatx和t接要u几这看 nsw Ihrr用字 mgtts上就eg cAei的nwo码e跳h,t编&#39;;
/*
*在某篇文章中截取一段字符串,多余的用省略号...表示,并且防止中文乱码
*$param1 string要截取的字符串 $str  注意:这里是utf-8编码
*$param2 int截取字符串的长度 $len  
*返回值 成功返回所要截取的字符串,失败为空
*/
function str($str=&#39;&#39;,$len=0){
    //检查参数
    if(!is_string($str) || !is_int($len)){
        return &#39;&#39;;
    }
    $length = strlen($str);
    if($length <= 0 ){
        return &#39;&#39;;
    }
    if($len>=$length){
        return $str;
    }
    //初始化,统计字符串的个数,
    $count = 0;
    for($i=0;$i<$length;$i++){
        //达到个数跳出循环,$i即为要截取的长度
        if($count == $len){
            break;
        }
        $count++;
        //ord函数是获取字符串的ASCII编码,大于等于十六进制0x80的字符串即为中文字符串
        if(ord($str{$i}) >= 0x80){
            $i +=2;//中文编码的字符串的长度再加2
        }
    }
    //如果要截取的个数超过了字符串的总个数,那么我们返回全部字符串,不带省略号
    if($len > $count){
        return $str;
    }else{
        return substr($str,0,$i).&#39;...&#39;;
    }
}

Die Implementierung des obigen Codes besteht darin, den ASCII-Code für Einzelbyte-Zeichen kleiner als 0x80 zu verwenden. Wie viele Bytes übersprungen werden müssen, hängt von der spezifischen Codierung ab.

 Wenn es Fehler gibt, weisen Sie bitte darauf hin.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWie man den ersten verstümmelten chinesischen Code in PHP abfängt. 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