ホームページ >php教程 >PHP源码 >PHP截取字符串(加强版,兼容UTF8和GBK)

PHP截取字符串(加强版,兼容UTF8和GBK)

PHP中文网
PHP中文网オリジナル
2016-05-25 17:09:251012ブラウズ


function htmlencode($string) {
	if(is_array($string)) {
		foreach($string as $key => $val) {
			$string[$key] = htmlencode($val);
		}
	} else {
		$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1', str_replace(array('&', '"', ' $length)) {
		$wordscut = '';
		if(strtolower($charset) == 'utf-8') {
			$n = 0;
			$tn = 0;
			$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 = $length) {
					break;
				}
			}
			if($noc > $length) {
				$n -= $tn;
			}
			$wordscut = substr($string, 0, $n);
		} else {
			for($i = 0; $i < $length - 1; $i++) {
				if(ord($string[$i]) > 127) {
					$wordscut .= $string[$i].$string[$i + 1];
					$i++;
				} else {
					$wordscut .= $string[$i];
				}
			}
		}
		$wordscut .= $dot;
		$string = $wordscut;
	}
	return htmlencode($string);
}

                   

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。