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上运行良好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |