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

php截取字符串中英文不会出现乱码2017-09-09 22:28

在使用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为将要截取的长度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值