Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel für die Verwendung benutzerdefinierter Funktionen zum Zählen der Länge chinesischer Zeichenfolgen in PHP

Detailliertes Beispiel für die Verwendung benutzerdefinierter Funktionen zum Zählen der Länge chinesischer Zeichenfolgen in PHP

怪我咯
怪我咯Original
2017-07-04 12:03:101374Durchsuche

In diesem Artikel wird hauptsächlich die Methode der PHP-benutzerdefinierten Funktionzur Erstellung von Statistiken über die Länge von ChinesischStrings vorgestellt. Er fasst die Bestimmung, Codierung und Funktionsweise von PHP im Zusammenhang mit Chinesisch zusammen In Form von Beispielen können Freunde in Not sich auf

beziehen. Dieser Artikel beschreibt das Beispiel für die Verwendung benutzerdefinierter PHP-Funktionen zum Zählen der Länge chinesischer Zeichenfolgen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Chinesische Zeichen werden als 2 Zeichen berechnet und englische Zeichen werden als 1 berechnet

Code

/**
* 可以统计中文字符串长度的函数
*
*/
function abslength($str)
{
  $len=strlen($str);
  $i=0;
  while($i<$len)
  {
    if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str[$i]))
    {
      $i+=2;
    }
    else
    {
      $i+=1;
    }
  }
  return $i;
}

Sonstiges: PHP bestimmt die Zeichenlänge: Chinesisch, Englisch, Zahlen.

Es gibt viele Möglichkeiten, dies zu tun. Nehmen Sie ein einfaches auf.

mb_strlen($str, &#39;GBK&#39;);

Der Nachteil besteht darin, dass Sie die mb-Bibliothek installieren müssen.

Es gibt jedoch noch einige Probleme, die gelöst werden müssen.

Die Kodierungsregeln für GB-Code lauten wie folgt: Jedes chinesische Zeichen besteht aus zwei Bytes, das erste Byte reicht von 0XA1-0XFE, insgesamt 96 Typen. Der Bereich des zweiten Bytes beträgt jeweils 0XA1-0XFE, insgesamt 96 Typen. Mit diesen beiden Bytes können insgesamt 96 * 96 = 8836 chinesische Zeichen definiert werden. Insgesamt gibt es tatsächlich 6763 chinesische Schriftzeichen.

Die Kodierungsregeln für den BIG5-Code lauten wie folgt: Jedes chinesische Zeichen besteht aus zwei Bytes, das erste Byte reicht von 0X81-0XFE, insgesamt 126 Typen. Der Bereich des zweiten Bytes beträgt 0X40-0X7E, 0XA1-0XFE, insgesamt 157 Typen. Mit anderen Worten, mit diesen beiden Bytes können insgesamt 126 * 157 = 19782 chinesische Zeichen definiert werden. Einige dieser chinesischen Zeichen werden von uns häufig verwendet, wie z. B. Yi und D. Diese Zeichen werden als häufig verwendete Zeichen bezeichnet und ihre BIG5-Codes reichen von 0XA440 bis 0XC671, also insgesamt 5401 Zeichen. Weniger häufig verwendete Zeichen wie „tan“ und „diao“ werden als weniger häufig verwendete Zeichen bezeichnet und reichen von 0XC940 bis 0XF9FE, insgesamt 7652 Zeichen. Der Rest sind einige Sonderzeichen .

Ein sichererer Ansatz.

function StrLenW($str)
{
    $count = 0;
    $len = strlen($str);
     for($i=0; $i<$len; $i++,$count++)
       if(ord($str[$i])>=128)
        $i++;
     return $count;
}

Abschließend ist das Folgende richtig und universell!

Code:

/**作用:统计字符长度包括中文、英文、数字
* 参数:需要进行统计的字符串、编码格式目前系统统一使用UTF-8
* 修改记录:
   $str = "kds";
  echo sstrlen($str,&#39;utf-8&#39;);
* */
function sstrlen($str,$charset) {
    $n = 0; $p = 0; $c = &#39;&#39;;
    $len = strlen($str);
    if($charset == &#39;utf-8&#39;) {
      for($i = 0; $i < $len; $i++) {
        $c = ord($str{$i});
        if($c > 252) {
          $p = 5;
        } elseif($c > 248) {
          $p = 4;
        } elseif($c > 240) {
          $p = 3;
        } elseif($c > 224) {
          $p = 2;
        } elseif($c > 192) {
          $p = 1;
        } else {
          $p = 0;
        }
        $i+=$p;$n++;
      }
    } else {
      for($i = 0; $i < $len; $i++) {
        $c = ord($str{$i});
        if($c > 127) {
          $p = 1;
        } else {
          $p = 0;
      }
        $i+=$p;$n++;
      }
    }
    return $n;
}

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel für die Verwendung benutzerdefinierter Funktionen zum Zählen der Länge chinesischer Zeichenfolgen in PHP. 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