凌的博客

您现在的位置是: 首页 > 学无止境 > PHP > 

PHP

截取字符串

2016-08-28 PHP 761
{ if(strlen($string) <= $length) { return $string; } $pre = chr(1); $end = chr(1); $string = str_replace(array(\'&amp;\', \'&quot;\', \'&lt;\', \'&gt;\'), array($pre.\'&\'.$end,
{
	if(strlen($string) <= $length) {
		return $string;
	}

	$pre = chr(1);
	$end = chr(1);
	$string = str_replace(array('&amp;', '&quot;', '&lt;', '&gt;'), 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 || (32 <= $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(240 <= $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 {
		$_length = $length - 1;
		for($i = 0; $i < $length; $i  ) {
			if(ord($string[$i]) <= 127) {
				$strcut .= $string[$i];
			} else if($i < $_length) {
				$strcut .= $string[$i].$string[  $i];
			}
		}
	}

	$strcut = str_replace(array($pre.'&'.$end, $pre.'"'.$end, $pre.'<'.$end, $pre.'>'.$end), array('&amp;', '&quot;', '&lt;', '&gt;'), $strcut);

	$pos = strrpos($strcut, chr(1));
	if($pos !== false) {
		$strcut = substr($strcut,0,$pos);
	}
	return $strcut.$dot;
}

文章评论

0条评论