Heim  >  Artikel  >  Backend-Entwicklung  >  Beschreiben Sie kurz die Methode zum Abfangen chinesischer Zeichen in PHP, um verstümmelte Zeichen zu verhindern

Beschreiben Sie kurz die Methode zum Abfangen chinesischer Zeichen in PHP, um verstümmelte Zeichen zu verhindern

墨辰丷
墨辰丷Original
2018-06-11 11:55:561568Durchsuche

Die direkte Verwendung der PHP-Funktion substr zum Abfangen chinesischer Zeichen kann zu verstümmelten Zeichen führen. Der Hauptgrund dafür ist, dass substr ein chinesisches Zeichen gewaltsam in zwei Hälften zerschneiden kann. Sehen wir uns also an, wie wir dieses Problem lösen können.

Ich glaube, dass jeder in seinen eigenen Programmen häufig das Abfangen von Zeichenfolgen verwendet, beim Abfangen chinesischer Zeichenfolgen jedoch häufig auf das Problem verstümmelter Zeichen stößt. Dies ist sehr problematisch. Als Nächstes stellen wir zwei Methoden vor, um verstümmelte Zeichen beim Abfangen chinesischer Zeichenfolgen zu verhindern.
Zuallererst ist es bequem, eine von Ihnen selbst geschriebene Funktion zu verwenden.
Verwenden Sie diese Funktion zum Abfangen und es entstehen keine verstümmelten Zeichen.

/** 
 * 支持中文字符串截取 
 */ 
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){ 
  switch($charset){ 
    case 'utf-8':$char_len=3;break; 
    case 'UTF8':$char_len=3;break; 
    default:$char_len=2; 
  } 
  //小于指定长度,直接返回 
  if(strlen($str)<=($length*$char_len)){   
    return $str; 
  } 
  if(function_exists("mb_substr")){  
    $slice= mb_substr($str, $start, $length, $charset); 
  }else if(function_exists(&#39;iconv_substr&#39;)){ 
    $slice=iconv_substr($str,$start,$length,$charset); 
  }else{ 
    $re[&#39;utf-8&#39;]  = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; 
    $re[&#39;gb2312&#39;] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; 
    $re[&#39;gbk&#39;]  = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; 
    $re[&#39;big5&#39;]  = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; 
    preg_match_all($re[$charset], $str, $match); 
    $slice = join("",array_slice($match[0], $start, $length)); 
  } 
  if($suffix) 
    return $slice; 
  return $slice; 
}

Die zweite ist eine integrierte Funktion in PHP, die mb_substr-Funktion

Gibt das Codierungsformat der Zeichenfolge an abgefangen werden, nur Es kann effektiv verstümmelte Zeichen verhindern.

Erklärung

string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] ) 
<?php 
 function substr_unicode($str, $s, $l = null) { 
   return join("", array_slice( 
     preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l)); 
 } 
 
$str = "Büyük"; 
 $s = 0; // start from "0" (nth) char 
 $l = 3; // get "3" chars 
 echo substr($str, $s, $l) ."\n";  
 echo mb_substr($str, $s, $l) ."\n"; 
 echo substr_unicode($str, $s, $l); 
 ?>

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe es kann für jeden hilfreich sein, der lernt, hilft.

Verwandte Empfehlungen:

Prinzip des PHP-Ereignismechanismus

PHP-Betriebssitzung und Datenbankmethode

PHP WeChat-Schnittstelle implementiert QR-Code-Generierungsklasse

Das obige ist der detaillierte Inhalt vonBeschreiben Sie kurz die Methode zum Abfangen chinesischer Zeichen in PHP, um verstümmelte Zeichen zu verhindern. 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