php sscanf和逗号角色

时间:2016-06-10 15:03:26

标签: php scanf

我遇到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兼容,我错了吗? 我已经说过,相同的字符串模板可以用于两个方向:包装和展开:非常有用!...可能是不可能使用逗号?

谢谢:)

1 个答案:

答案 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.