基本上我的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;可能是空的。
注意:我正在处理换行符之间的匹配数据,因此部分代码对于保持几乎相同非常重要。
答案 0 :(得分:3)
您可以使用(?:...)?
preg_match("/(?:(?P<value>\d+(?:\.\d+)*?)\h)?(?P<unit>ACT\sFC)/", $text, $act_fc);
这是demo。 这是regex tester。