使用 sscanf 读取固定长度的字符串
using sscanf to read fixed length strings
我正在尝试 sscanf
读取一堆连续的固定长度字符串,但效果不是很好。我可以这样打印一个固定长度的字符串:
sprintf('%.5s', 'aaaaabbbbb');
但是如果我尝试使用 %.5s
来读取固定长度的字符串(例如输入字符串的前 5 个字节),它就不起作用。例如
var_dump(sscanf('aaaaabbbbb', '%.5s'));
如果我这样做 var_dump
returns NULL
我会收到以下警告:
Warning: sscanf(): Bad scan conversion character "."
除了 %.5s
之外,我还尝试了 %5s
但这也没有达到预期效果。例如
var_dump(sscanf('aa aabbbbb', '%5s'));
那个return是这样的:
array(1) {
[0]=>
string(2) "aa"
}
我想要它 return 是这样的:
array(1) {
[0]=>
string(5) "aa aa"
}
有什么想法吗?
问题是任何 space 字符都被视为使用 %s
的新输入。
根据 sscanf 评论,这应该有效:
$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 上工作正常。
我正在尝试 sscanf
读取一堆连续的固定长度字符串,但效果不是很好。我可以这样打印一个固定长度的字符串:
sprintf('%.5s', 'aaaaabbbbb');
但是如果我尝试使用 %.5s
来读取固定长度的字符串(例如输入字符串的前 5 个字节),它就不起作用。例如
var_dump(sscanf('aaaaabbbbb', '%.5s'));
如果我这样做 var_dump
returns NULL
我会收到以下警告:
Warning: sscanf(): Bad scan conversion character "."
除了 %.5s
之外,我还尝试了 %5s
但这也没有达到预期效果。例如
var_dump(sscanf('aa aabbbbb', '%5s'));
那个return是这样的:
array(1) {
[0]=>
string(2) "aa"
}
我想要它 return 是这样的:
array(1) {
[0]=>
string(5) "aa aa"
}
有什么想法吗?
问题是任何 space 字符都被视为使用 %s
的新输入。
根据 sscanf 评论,这应该有效:
$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 上工作正常。