2017-03-16 124 views
0

substr()被返回,而不是25.SUBSTR()返回的字符数不正确

$nature_goods 28个字符被输入栏,其中用户可以输入包含特殊字符的字符串。

代码

$nature_goods = "Nature quantityyy of goods is nice 120pcs 1*X23X24898"; 
echo strlen($nature_goods); 
echo "<br>"; 
echo substr($nature_goods, 0,25); 
echo "<br>"; 
echo strlen(substr($nature_goods, 0,25)); 
echo "<br>"; 
echo substr($nature_goods, 25,50); 
echo "<br>"; 
echo strlen(substr($nature_goods, 25,50)); 
echo "<br>"; 

输出

53 
Nature quantityyy of good 
25 
s is nice 120pcs 1*X23X24898 
28 

我试图mb_substr()mb_strlen(),但我没有看到任何多字节字符串创建一个问题。有人能指出这个错误吗?

+0

没有错 - 你的输出是正确的。从's开始只有28个字符是.....'so'substr($ nature_goods,25,50);'只返回28 – bansi

+0

但是substr(25,50)必须返回25个字符吗? –

+2

没有,它将从25位检查返回最多50个字符[手册](http://php.net/manual/en/function.substr.php)如果你想只有25个字符,你应该使用'SUBSTR($ nature_goods, 25,25);' – bansi

回答

0

您正在使用SUBSTR不正确。

您正在使用传递给函数的最后一个值作为结束点而不是长度,例如抓取25到50之间的字符,而不是使用它应该使用的substr,这就像您写的那样它在跳过前25个字符后抓取50个字符。

最后的函数调用应SUBSTR($ nature_goods,25,25);如果您希望收到25个字符。

值预计SUBSTR:

SUBSTR(字符串$字符串,整数$开始,诠释$长度)

完整的文档在这里:

http://php.net/manual/en/function.substr.php