我遇到PHP sscanf函数和逗号字符的问题。我需要提取4个值,正如这个工作示例所做的那样:
<?php
$format = '%s %s, blabla %ih blabla %ih';
$input = 'blabla 08-06-2016 blabla 14h blabla 17h';
$result = sscanf($input, $format);
var_dump($result);
输出:
array (size=4)
0 => string 'blabla' (length=10)
1 => string '08-06-2016' (length=10)
2 => int 14
3 => int 17
但是我的真实例子涉及一个逗号字符,我不能让它工作:
<?php
$format = '%s %s, blabla %ih blabla %ih';
$input = 'blabla 08-06-2016, blabla 14h blabla 17h';
$result = sscanf($input, $format);
var_dump($result);
输出:
array (size=4)
0 => string 'blabla' (length=10)
1 => string '08-06-2016,' (length=11)
2 => null
3 => null
这很简单,但我无法找到解决方案......逗号是保留字吗?
更新1:
对不起,我忘了提这个: 我希望将$ format上存储的字符串模板用作sprintf的模板:如果我修改它包括regexp,它将不会与sprintf兼容,我错了吗? 我已经说过,相同的字符串模板可以用于两个方向:包装和展开:非常有用!...可能是不可能使用逗号?
谢谢:)
答案 0 :(得分:0)
This will solve your issue read comma-separated input with scanf.
$format = '%s %20[^,], blabla %ih blabla %ih';
or some other max length, the 20 is arbitrary since I have no context in your application.