php截取字符串中英文不会出现乱码|三体教程
文章目录

php截取字符串中英文不会出现乱码

在使用php截取字符串的时候,很有可能会遇到乱码的问题。

比如下面的代码

echo substr("最全的编程技术",0,7);

得到的结果将会是

最全�

为什么呢?

因为中文字符在php中是占三个字符的。

这段代码截取7个字符,所以前面两个是正确的,但是第三个就是乱码了。

今天小编分享的是真正的不管是中文还是英文,都能正确截取,并且不会出现乱码。

php代码<?php
function displaystr($str, $start, $lenth){
	$len = strlen($str);
	$r = array();
	$n = 0;
	$m = 0;
	for($i = 0; $i < $len; $i++) {
		$x = substr($str, $i, 1);
		$a  = base_convert(ord($x), 10, 2);
		$a = substr('00000000'.$a, -8);
		if ($n < $start){
			if (substr($a, 0, 1) == 0) {
			}elseif (substr($a, 0, 3) == 110) {
				$i += 1;
			}elseif (substr($a, 0, 4) == 1110) {
				$i += 2;
			}
			$n++;
		}else{
			if (substr($a, 0, 1) == 0) {
				$r[ ] = substr($str, $i, 1);
			}elseif (substr($a, 0, 3) == 110) {
				$r[ ] = substr($str, $i, 2);
				$i += 1;
			}elseif (substr($a, 0, 4) == 1110) {
				$r[ ] = substr($str, $i, 3);
				$i += 2;
			}else{
				$r[ ] = '';
			}
			if (++$m >= $lenth){
				break;
			}
		}
	}
	return join('',$r);
}
?>

其中$str是要截取的字符串,$start是开始截取的位置,$lenth为将要截取的长度。

本文网址:http://www.santii.com/article/45.html


数据更新时间:2018-05-26