字符串长度问题

zhuyf1101 2016-01-20 10:13:01
vardump打印一字符串
string(14) "00107042012"
获取到的字符串长度怎么是14
明明是11个数字啊!
为什么?
...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyf1101 2016-01-21
  • 打赏
  • 举报
回复
引用 1 楼 fdipzone 的回复:
你的字符串有前有三个特殊字符(+BOM)

<?php
$str = '00107042012';
$str1 = '00107042012';
var_dump($str);
var_dump($str1);
?>
看看两个输出就知道了。 那三个特殊字符的ascii码239,187,191就是BOM头的 EF BB BF

<?php
echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
$str = '00107042012';
$str1 = '00107042012';
echo 'str:<br>';
for($i=0,$len=strlen($str);$i<$len;$i++){
    echo ord(substr($str,$i,1)).'<br>';
}

echo '<br>str1:<br>';
for($i=0,$len=strlen($str1);$i<$len;$i++){
    echo ord(substr($str1,$i,1)).'<br>';
}
?>

str:
239
187
191
48
48
49
48
55
48
52
50
48
49
50

str1:
48
48
49
48
55
48
52
50
48
49
50
可以使用程序去掉。

<?php
$str = '00107042012';
$str = substr($str, 3);
var_dump($str);
?>
问题解决了,感谢版主的回复~下次知道了,转成ascii码输出就好了.么么哒
傲雪星枫 2016-01-20
  • 打赏
  • 举报
回复
你的字符串有前有三个特殊字符(+BOM)

<?php
$str = '00107042012';
$str1 = '00107042012';
var_dump($str);
var_dump($str1);
?>


看看两个输出就知道了。


那三个特殊字符的ascii码239,187,191就是BOM头的 EF BB BF

<?php
echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
$str = '00107042012';
$str1 = '00107042012';
echo 'str:<br>';
for($i=0,$len=strlen($str);$i<$len;$i++){
echo ord(substr($str,$i,1)).'<br>';
}

echo '<br>str1:<br>';
for($i=0,$len=strlen($str1);$i<$len;$i++){
echo ord(substr($str1,$i,1)).'<br>';
}
?>



str:
239
187
191
48
48
49
48
55
48
52
50
48
49
50

str1:
48
48
49
48
55
48
52
50
48
49
50


可以使用程序去掉。

<?php
$str = '00107042012';
$str = substr($str, 3);
var_dump($str);
?>

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧