preg_match如何知道存在的部分值

时间:2016-05-17 21:21:58

标签: php regex preg-match

基本上我的preg_match工作正常。但是,当只存在文本的部分值(而不是数字)时,我需要知道尝试输入正确的东西。

示例1:

$text = "2000 FC
2 A
100 FH
1200 ACT FC
";

示例2:

$text = "2000 FC
2 A
100 FH
ACT FC
";

CODE:

preg_match("~(?P<value>\d+(?:.\d+)*?)\h(?P<unit>ACT\sFC)~", $text, $act_fc);

示例1显示正确的文本&#34; 1200 ACT FC&#34;。执行preg_match时,将1200分配给值,并将ACT_FC分配给$ act_fc数组中的单元。

然而,如果有一个例子,例如&#34; ACT FC&#34;只有,然后$ act_fc数组为空。

如果没有执行另一个preg_match来检查&#34; ACT FC&#34;,是否有办法返回ACT_FC?也许&#34;单位&#34;可能被迫填充数组和&#34;值&#34;可能是空的。

注意:我正在处理换行符之间的匹配数据,因此部分代码对于保持几乎相同非常重要。

1 个答案:

答案 0 :(得分:3)

您可以使用(?:...)?

将值部分设为可选
preg_match("/(?:(?P<value>\d+(?:\.\d+)*?)\h)?(?P<unit>ACT\sFC)/", $text, $act_fc);

这是demo。 这是regex tester