加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用sscanf读取固定长度的字符串

发布时间:2020-12-13 15:56:13 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试sscanf读取一堆连续的固定长度字符串,但它不能很好地工作.我可以这样打印固定长度的字符串: sprintf('%.5s','aaaaabbbbb'); 但是如果我尝试使用%.5s来读取固定长度的字符串(例如输入字符串的前5个字节),它就不起作用了.例如. var_dump(sscanf('a
我正在尝试sscanf读取一堆连续的固定长度字符串,但它不能很好地工作.我可以这样打印固定长度的字符串:

sprintf('%.5s','aaaaabbbbb');

但是如果我尝试使用%.5s来读取固定长度的字符串(例如输入字符串的前5个字节),它就不起作用了.例如.

var_dump(sscanf('aaaaabbbbb','%.5s'));

如果我这样做,var_dump返回NULL,我得到以下警告:

Warning: sscanf(): Bad scan conversion character "."

除了%.5s之外,我尝试了%5s,但这也没有按预期工作.例如.

var_dump(sscanf('aa aabbbbb','%5s'));

这返回了:

array(1) {
  [0]=>
  string(2) "aa"
}

我希望它返回的是:

array(1) {
  [0]=>
  string(5) "aa aa"
}

有任何想法吗?

解决方法

问题是任何空格字符都被视为使用%s的新输入.

根据http://php.net/manual/en/function.sscanf.php评论,这应该工作:

$result = sscanf("  Vendor: My Vendo Model: Super Model Foo  Rev: 1234",'  Vendor: %8[ -~] Model: %16[ -~] Rev: %4c',$vendor,$model,$rev);

所以,在你的情况下:

var_dump(sscanf('aa aabbbbb','%5[ -~]'));

它在PHP 5.2.10上运行良好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读