29 $last4bytes = substr($string, -3);
30 $reversed = array_reverse(unpack(
"C*", $last4bytes));
31 if (($reversed[0] & 0x80) === 0x00)
33 elseif (($reversed[0] & 0xC0) === 0xC0)
34 return substr($string, 0, -1);
35 elseif (($reversed[1] & 0xE0) === 0xE0)
36 return substr($string, 0, -2);
37 elseif (($reversed[2] & 0xE0) === 0xF0)
38 return substr($string, 0, -3);
73 public static function pad($string, $padLen, $padStr =
' ', $padType = STR_PAD_RIGHT)
75 $strLength = mb_strlen($string);
76 $padStrLength = mb_strlen($padStr);
77 if (!$strLength && ($padType == STR_PAD_RIGHT || $padType == STR_PAD_LEFT))
81 if (!$padLen || !$padStrLength || $padLen <= $strLength)
87 $repeat = ceil(($padLen - $strLength) / $padStrLength);
88 if ($padType == STR_PAD_RIGHT)
90 $result = $string . str_repeat($padStr, $repeat);
93 else if ($padType == STR_PAD_LEFT)
95 $result = str_repeat($padStr, $repeat) . $string;
98 else if ($padType == STR_PAD_BOTH)
100 $length = ($padLen - $strLength) / 2;
101 $repeat = ceil($length / $padStrLength);
102 $result = mb_substr(str_repeat($padStr, $repeat), 0, floor($length))
104 .mb_substr(str_repeat($padStr, $repeat), 0, ceil($length));