Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert Längenbeurteilungs- und Abfangmethoden für gemischte chinesische und englische Zeichenfolgen

PHP implementiert Längenbeurteilungs- und Abfangmethoden für gemischte chinesische und englische Zeichenfolgen

墨辰丷
墨辰丷Original
2018-05-24 11:32:021762Durchsuche

In diesem Artikel werden hauptsächlich die PHP-Methoden zum Beurteilen und Abfangen der Länge gemischter chinesischer und englischer Zeichenfolgen vorgestellt. Er analysiert anhand von Beispielen die Durchlauf-, Konvertierungs-, Abfang-, Berechnungs- und anderen damit verbundenen Betriebsfähigkeiten chinesischer und englischer Zeichenfolgen. Freunde in Not können darauf verweisen.

Das Beispiel in diesem Artikel beschreibt die PHP-Methode zum Beurteilen und Abfangen der Länge gemischter chinesischer und englischer Zeichenfolgen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

/**
 * 
 * 中英混合字符串长度判断 
 * @param unknown_type $str
 * @param unknown_type $charset
 */
function strLength($str, $charset = 'utf-8') {
  if ($charset == 'utf-8')
    $str = iconv ( 'utf-8', 'gb2312', $str );
  $num = strlen ( $str );
  $cnNum = 0;
  for($i = 0; $i < $num; $i ++) {
    if (ord ( substr ( $str, $i + 1, 1 ) ) > 127) {
      $cnNum ++;
      $i ++;
    }
  }
  $enNum = $num - ($cnNum * 2);
  $number = ($enNum / 2) + $cnNum;
  return ceil ( $number );
}

/**
 * 
 * 中英混合的字符串截取
 * @param unknown_type $sourcestr
 * @param unknown_type $cutlength
 */
function cut_str($sourcestr, $cutlength) {
  $returnstr = &#39;&#39;;
  $i = 0;
  $n = 0;
  $str_length = strlen ( $sourcestr ); //字符串的字节数 
  while ( ($n < $cutlength) and ($i <= $str_length) ) {
    $temp_str = substr ( $sourcestr, $i, 1 );
    $ascnum = Ord ( $temp_str ); //得到字符串中第$i位字符的ascii码 
    if ($ascnum >= 224) //如果ASCII位高与224,
    {
      $returnstr = $returnstr . substr ( $sourcestr, $i, 3 ); //根据UTF-8编码规范,将3个连续的字符计为单个字符   
      $i = $i + 3; //实际Byte计为3
      $n ++; //字串长度计1
    } elseif ($ascnum >= 192) //如果ASCII位高与192,
    {
      $returnstr = $returnstr . substr ( $sourcestr, $i, 2 ); //根据UTF-8编码规范,将2个连续的字符计为单个字符 
      $i = $i + 2; //实际Byte计为2
      $n ++; //字串长度计1
    } elseif ($ascnum >= 65 && $ascnum <= 90) //如果是大写字母,
    {
      $returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
      $i = $i + 1; //实际的Byte数仍计1个
      $n ++; //但考虑整体美观,大写字母计成一个高位字符
    } else //其他情况下,包括小写字母和半角标点符号,
    {
      $returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
      $i = $i + 1; //实际的Byte数计1个
      $n = $n + 0.5; //小写字母和半角标点等与半个高位字符宽...
    }
  }
  if ($str_length > $cutlength) {
    $returnstr = $returnstr . "..."; //超过长度时在尾处加上省略号
  }
  return $returnstr;
}

Das Obige ist das Ich hoffe, dass der gesamte Inhalt dieses Artikels für das Studium aller hilfreich sein wird.


Verwandte Empfehlungen:

So lösen Sie das Problem verstümmelter Zeichen nach dem Testen mit PHP nach dem Andocken an Apache

PHP verwendet Cookies, um die Funktion zum Merken von Benutzernamen und Passwörtern auf Webseiten zu realisieren

PHPBeispiele für die Verwendung von Curl um die Anmeldung zu simulieren und Daten zu erfassen

Das obige ist der detaillierte Inhalt vonPHP implementiert Längenbeurteilungs- und Abfangmethoden für gemischte chinesische und englische Zeichenfolgen. 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