- /**
- PHP Digest Generation function
- Link:http://bbs.it-home.org 2013-3-7
- */
- function Cutstr ($string, $length, $charset, $dot) {//characters, intercept length, character set, end symbol
- if (strlen ($string) <= $length) {
- return $string;
- }
- $pre = Chr (1);
- $end = Chr (1);
- Protect Special strings
- $string = str_replace (Array (' & ', ' ' ', ' < ', ' > '), Array ($pre. ') & '. $end, $pre. ' ". $end, $pre. ' < '. $end, $pre. ' > '. $end), $string);
- $strcut = ";
- if (Strtolower ($charset) = = ' Utf-8 ') {
- $n = $tn = $noc = 0;
- while ($n < strlen ($string)) {
- $t = Ord ($string [$n]);
- if ($t = = 9 | | $t = = 10 | | (<= $t && $t <= 126)) {
- $tn = 1; $n + +; $noc + +;
- } elseif (194 <= $t && $t <= 223) {
- $tn = 2; $n + = 2; $noc + = 2;
- } elseif (224 <= $t && $t <= 239) {
- $tn = 3; $n + = 3; $noc + = 2;
- } elseif (<= $t && $t <= 247) {
- $tn = 4; $n + = 4; $noc + = 2;
- } elseif (248 <= $t && $t <= 251) {
- $tn = 5; $n + = 5; $noc + = 2;
- } elseif ($t = = 252 | | $t = = 253) {
- $tn = 6; $n + = 6; $noc + = 2;
- } else {
- $n + +;
- }
- if ($noc >= $length) {
- Break
- }
- }
- if ($noc > $length) {
- $n-= $tn;
- }
- $strcut = substr ($string, 0, $n);
- } else {
- for ($i = 0; $i < $length; $i + +) {
- $strcut. = Ord ($string [$i]) > 127? $string [$i]. $string [+ + $i]: $string [$i];
- }
- }
- To restore a special string
- $strcut = Str_replace (Array ($pre. ' & '. $end, $pre. ' ". $end, $pre. ' < '. $end, $pre. ' > '. $end), Array (' & ', ' "', ' < ', ' > '), $strcut);
- Fixed an issue where special string segments occurred
- $pos = Strrpos ($s, Chr (1));
- if ($pos!== false) {
- $strcut = substr ($s, 0, $pos);
- }
- return $strcut. $dot;
- }
- ?>
Copy CodeThe above is the full code of the PHP digest generation function, you copy to your own editor, and then test run it. |