PHP unterstützt Funktionen zum Abfangen chinesischer Zeichen für mehrere Dateikodierungen

PHP中文网
Freigeben: 2016-07-29 09:12:47
Original
1193 Leute haben es durchsucht

Durch die Verwendung verschiedener Methoden zum perfekten Abfangen chinesischer Zeichenfolgen wird die UTF-8-, GBK-, GB2312- und BIG5-Kodierung ohne Installation der Erweiterungen mbstring und iconv unterstützt. Nach der Installation der oben genannten Erweiterungen werden weitere Kodierungen unterstützt Funktionsbeschreibung.
Es gibt drei Methoden
1. mb_substr() erfordert die mbstring-Erweiterung
2. Iconv_substr() erfordert die Iconv-Erweiterung
3. Drei Methoden werden von oben nach oben priorisiert unten Wenn die vorherige Methode nicht verfügbar ist, wird automatisch die nächste Methode verwendet.

Dieser Code wurde aus dem von Midnight veröffentlichten Code „String Interception, Supports Common Encodings“ optimiert.

1. Korrigieren Sie, dass mb_substr und iconv_substr im Originalcode nicht zurückgegeben werden, daher entspricht er ein ungültiger Aufruf

2. Optimieren Sie das Abfangen von Zeichenfolgensuffixen, und Sie können die Suffixe anpassen. Der Standardwert ist leer.

<?php
/**
 * 字符串截取,支持中文和其他编码
 *
 * @param string $str 需要转换的字符串
 * @param string $start 开始位置
 * @param string $length 截取长度
 * @param string $charset 编码格式
 * @param string $suffix 截断字符串后缀
 * @return string
 */
function substr_ext($str, $start=0, $length, $charset="utf-8", $suffix="")
{
    if(function_exists("mb_substr")){
         return mb_substr($str, $start, $length, $charset).$suffix;
    }
    elseif(function_exists(&#39;iconv_substr&#39;)){
         return iconv_substr($str,$start,$length,$charset).$suffix;
    }
    $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));
    return $slice.$suffix;
}
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage