How to intercept Chinese strings in PHP?
It is well known that PHP native function substr does not support the interception of Chinese strings. The following code provides a variety of methods for intercepting PHP Chinese strings.
1. Intercept GB2312 Chinese string
0xa0) { $tmpstr. = substr ($str, $i, 2); $i + +; } else $tmpstr. = substr ($str, $i, 1); } return $tmpstr;}? >
2. Interception of UTF8 encoded multibyte strings
3. Chinese character interception function supported by UTF-8 and GB2312
$sublen) return join ("', Array_slice ($t _string[0], $start, $sublen))." ..."; return join ("', Array_slice ($t _string[0], $start, $sublen)); } else {$start = $start * *; $sublen = $sublen; $strlen = strlen ($string); $tmpstr = "; for ($i =0; $i < $strlen; $i + +) {if ($i >= $start && $i < ($start + $sublen)) { if (Ord (substr ($string, $i, 1)) >129) {$tmpstr. = substr ($string, $i, 2); } else {$tmpstr. = substr ($string, $i, 1); }} if (Ord (substr ($string, $i, 1)) >129) $i + +; } if (strlen ($TMPSTR) < $strlen) $tmpstr. = "..."; return $tmpstr; }} $str = "ABCD string to intercept"; Echo cut_str ($str, 8, 0, ' gb2312 ');? >
4. Bugfree character intercept function
< php/** * @package Bugfree * @version $Id: functionsmain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss EXP $ * * * Return part of a string (Enhance the function substr ()) * * @author Chunsheng Wang
* @param string $String the string to cut. * @param int $Length The Length of returned string. * @param booble $Append whether Append "...": False|true * @return string The cutted string. */function syssubstr ($String, $Length, $Append = False) {if (strlen ($String) < = $Length) {return $String; } else {$I = 0; while ($I < $Length) {$StringTMP = substr ($String, $I, 1); if (Ord ($StringTMP) >=224) {$StringTMP = substr ($String, $I, 3); $I = $I + 3; } elseif (Ord ($StringTMP) >=192) {$StringTMP = substr ($String, $I, 2); $I = $I + 2; } else {$I = $I + 1; } $StringLast [] = $StringTMP; } $StringLast = Implode ("", $StringLast); if ($Append) {$StringLast. = "..."; } return $STRInglast; }} $String = "17test.info in the forefront of China's automated testing"; $Length = ""; $Append = False;echo syssubstr ($String, $Length, $Append);? >