Home > Article > Backend Development > Send a newly compiled violent version/gentle version of the Chinese interception function_PHP tutorial
It is recommended to use the violent version, which is safe and reliable; the gentle version is more efficient from a programming perspective. Haha
The basic principle is to correct the possible misalignment of off and len. The gentle version searches backward from off. The first character
/**
* @brief Simple and efficient string interception function (supports CJK characters)
*
* It simply determines the ASCII value of the high-order part and can handle most regular Chinese and English mixed strings
* Does not support 4-byte or 3-byte utf encoding
*
* Key points: Correct the misaligned off value/len value in double bytes (note the purpose of the default value of parameter $len is -1)
* The usage is the same as substr(), there may be problems with the low bits of GBK code (starting from 0x40)
*/
function my_substr($str, $off, $len = -1)
{
$mlen = strlen($str);
/* Step 0: Parameter security check and correction */
if ($off < 0)
$off = $mlen;
if ($off > $mlen)
$off = 0;
/* Step 1: $off correction, reverse search */
if ($off > 0)
{
$fix = $off;
$mb = false;
do
{
$ch = ord($str{$fix--});
if ($ch < 0x80)
break;
$mb = true;
}
while ($fix);
if ($mb)
{
$fix = ($off - $fix);
if ($fix & 1)
{
$off--;
$len ;
}
}
}
/* Step 2: $len correction, same as above */
if ($len <= 0 || ($len $off) >= $mlen)
{
$len = $mlen - $off;
}
else
{