我正在使用PHPExcel处理从Excel文件加载的某些数据。每个领域的一切都运转良好,但我在一个应该包含模式的领域遇到了一些麻烦。
模式是
(([0-2]?[0-9]\:[0-5]?[0-9]\:([0-5]?[0-9])\/([0-2]?[0-9]\:[0-5]?[0-9]\:([0-5]?[0-9])))\s?)*
应检查时间间隔,如" 00:30:45/01:40:12 01:10:34/1:07:12"等等。
我的问题是preg_match无法针对sting" 1:00"检查此模式。如果我添加一个变量来存储匹配,则返回一个元素数组,其值为""。
我使用在线工具(http://regexpal.com/)检查模式并按预期工作,但由于我未知的原因,preg_match没有。
我有什么遗失的吗?
答案 0 :(得分:0)
试试这个
<?php
$string = "00:30:45/01:40:12 01:10:34/1:07:12";
preg_match_all('!((\d{1,2}:\d{1,2}:\d{1,2}/(\d{1,2}:\d{1,2}:(\d{1,2}))))\s?!', $string, $matches);
echo "<pre>";
print_r($matches);
echo "</pre>";
你需要得到这个:
array (
0 =>
array (
0 => '00:30:45/01:40:12 ',
1 => '01:10:34/1:07:12',
),
1 =>
array (
0 => '00:30:45/01:40:12',
1 => '01:10:34/1:07:12',
),
2 =>
array (
0 => '00:30:45/01:40:12',
1 => '01:10:34/1:07:12',
),
3 =>
array (
0 => '01:40:12',
1 => '1:07:12',
),
4 =>
array (
0 => '12',
1 => '12',
),
)
答案 1 :(得分:0)
我终于设法解决了这个问题。在休息一下并再次以清晰的头脑再次访问代码之后,我注意到最后的'*'应该是'+',以便强制至少有一个时间间隔的实例。
谢谢大家的回复。