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兼容,我错了吗? 我已经找到了相同的字符串模板可以用于两个方向:包装和解包:非常有用!...也许不可能与逗号相关?
谢谢:)
答
这将解决您的问题read comma-separated input with scanf。
$format = '%s %20[^,], blabla %ih blabla %ih';
或其他最大长度,20是任意的,因为我的应用程序中没有上下文。
重复:http://stackoverflow.com/questions/26117192/wrong-results-by-using-sscanf-in-php – OSdave
感谢您的回复,但我有一个限制,我忘了提及......请看看更新1 – Katapofatico
你可以扩展你想如何使用'sprintf'?请展示一个例子,以便我可以有一个更好的主意 – OSdave