substr() return 不正确的字符数

substr() return incorrect number of characters

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(),但我没有看到任何多字节字符串造成问题。谁能指出错误?

您使用的 substr 不正确。

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

最后的函数调用应该是substr($nature_goods, 25, 25);如果您希望在 return.

中收到 25 个字符

substr 的预期值:

substr ( 字符串 $string , int $start , int $length )

这里有完整的文档:

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

substr()函数第三个参数是用来设置长度的,不是用来设置位置的。更多详情请访问

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