php sscanf和逗号字符

问题描述:

我有一个PHP sscanf函数和逗号字符的问题。我需要提取4个值,因为这工作示例作用:php sscanf和逗号字符

<?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:

对不起,我忘了提及这一点: 我希望使用存储在$格式字符串模板作为模板的sprintf过:如果我修改,包括正则表达式,它不会sprintf兼容,我错了吗? 我已经找到了相同的字符串模板可以用于两个方向:包装和解包:非常有用!...也许不可能与逗号相关?

谢谢:)

+1

重复:http://stackoverflow.com/questions/26117192/wrong-results-by-using-sscanf-in-php – OSdave

+0

感谢您的回复,但我有一个限制,我忘了提及......请看看更新1 – Katapofatico

+0

你可以扩展你想如何使用'sprintf'?请展示一个例子,以便我可以有一个更好的主意 – OSdave

这将解决您的问题read comma-separated input with scanf

$format = '%s %20[^,], blabla %ih blabla %ih';或其他最大长度,20是任意的,因为我的应用程序中没有上下文。