substr()返回不正确的字符数

时间:2017-03-16 04:44:27

标签: php substring substr

substr()返回28个字符而不是25个字符。

$nature_goods是输入字段,用户可以输入包含特殊字符的字符串。

代码

$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(),但我没有看到任何多字节字符串产生问题。有人可以指出错误吗?

2 个答案:

答案 0 :(得分:0)

您正在错误地使用substr。

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

最后的函数调用应该是substr($ nature_goods,25,25);如果您希望收到25个字符作为回报。

substr:

的预期值

substr(string $ string,int $ start,int $ length)

此处提供完整文档:

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

答案 1 :(得分:0)

在substr()函数中,第三个参数用于设置长度而不是设置位置。有关详细信息,请访问

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