11. 截取GB2312中文字符串 2 3< ?php 4 //截取中文字符串 5 function mysubstr($str, $start, $len) { 6 $tmpstr = ""; 7 $strlen = $start + $len; 8 for($i = 0; $i < $strlen; $i++) { 9 if(ord(substr($str, $i, 1)) > 0xa0) { 10 $tmpstr .= substr($str, $i, 2); 11 $i++; 12 } else 13 $tmpstr .= substr($str, $i, 1); 14 } 15 return $tmpstr; 16 } 17 ?> 182. 截取utf8编码的多字节字符串 19 20< ?php 21 //截取utf8字符串 22 function utf8Substr($str, $from, $len) 23 { 24 return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'. 25 '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s', 26 '$1',$str); 27 } 28 ?> 293. UTF-8、GB2312都支持的汉字截取函数 30< ?php 31 /* 32 Utf-8、gb2312都支持的汉字截取函数 33 cut_str(字符串, 截取长度, 开始长度, 编码); 34 编码默认为 utf-8 35 开始长度默认为 0 36 */ 37 38 function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') 39 { 40 if($code == 'UTF-8') 41 { 42 $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; 43 preg_match_all($pa, $string, $t_string); 44 45 if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."..."; 46 return join('', array_slice($t_string[0], $start, $sublen)); 47 } 48 else 49 { 50 $start = $start*2; 51 $sublen = $sublen*2; 52 $strlen = strlen($string); 53 $tmpstr = ''; 54 55 for($i=0; $i< $strlen; $i++) 56 { 57 if($i>=$start && $i< ($start+$sublen)) 58 { 59 if(ord(substr($string, $i, 1))>129) 60 { 61 $tmpstr.= substr($string, $i, 2); 62 } 63 else 64 { 65 $tmpstr.= substr($string, $i, 1); 66 } 67 } 68 if(ord(substr($string, $i, 1))>129) $i++; 69 } 70 if(strlen($tmpstr)< $strlen ) $tmpstr.= "..."; 71 return $tmpstr; 72 } 73 } 74 75 $str = "abcd需要截取的字符串"; 76 echo cut_str($str, 8, 0, 'gb2312'); 77 ?> 784. BugFree 的字符截取函数 79< ?php 80 /** 81 * @package BugFree 82 * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $ 83 * 84 * 85 * Return part of a string(Enhance the function substr()) 86 * 87 * @author Chunsheng Wang <wwccss@263.net> 88 * @param string $String the string to cut. 89 * @param int $Length the length of returned string. 90 * @param booble $Append whether append "...": false|true 91 * @return string the cutted string. 92 */ 93 function sysSubStr($String,$Length,$Append = false) 94 { 95 if (strlen($String) < = $Length ) 96 { 97 return $String; 98 } 99 else 100 { 101 $I = 0; 102 while ($I < $Length) 103 { 104 $StringTMP = substr($String,$I,1); 105 if ( ord($StringTMP) >=224 ) 106 { 107 $StringTMP = substr($String,$I,3); 108 $I = $I + 3; 109 } 110 elseif( ord($StringTMP) >=192 ) 111 { 112 $StringTMP = substr($String,$I,2); 113 $I = $I + 2; 114 } 115 else 116 { 117 $I = $I + 1; 118 } 119 $StringLast[] = $StringTMP; 120 } 121 $StringLast = implode("",$StringLast); 122 if($Append) 123 { 124 $StringLast .= "..."; 125 } 126 return $StringLast; 127 } 128 } 129 130 $String = "CodeBit.cn -- 简单、精彩、通用"; 131 $Length = "18"; 132 $Append = false; 133 echo sysSubStr($String,$Length,$Append); 134 ?>
PHP 截取字符串
Wesley13
2021-10-11
1440 0 0
点赞
收藏
评论区
加载中...