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.
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('iconv_substr')){ return iconv_substr($str,$start,$length,$charset).$suffix; } $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; $re['big5'] = "/[\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; }