我有一个HTML表单,使用post将索索索
发送到我的PHP文件。
我试过strlen,但它给了我24而不是3(?!)......然后这就打破了我的for循环:
$in=$_POST['inn'];
$length=strlen($in)
for ($i=0; $i<$length; $i++) {
$cleanchar=$in[$i];
}
我希望cleanchar作为一个单独的角色,就像只有一个角色通过POST发送一样。
如何使用PHP分隔每个字符?
答案 0 :(得分:2)
尝试使用mb_strlen
进行多字节字符操作:
echo mb_strlen('索索索', 'utf-8'); // or omit second parameter or change to your encoding
来自文档:
返回字符串str中具有字符编码编码的字符数。多字节字符计为1。
答案 1 :(得分:0)
你的表格没有发送三个字符,它发送三个sequences序列(其中12345是这些符号的字符代码 - 我不知道它实际是什么)。
这是八个字符,乘以三个符号,字符串长度为24。
如果您要运行echo htmlspecialchars($_POST['inn']);
,您可以清楚地看到这种效果。
我很确定有办法解决这个问题......我认为您需要确保文档字符集是<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
部分中的UTF-8:<head>
。
即便如此,根据这些符号的字节长度,您将获得6
或9
的长度,因为这是strlen
测量的内容。