基本上我的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是表示正確的文本 「1200 ACT FC」。當執行preg_match時,1200分配給值,ACT_FC分配給$ act_fc數組中的單元。
但是,如果像例2那樣只有「ACT FC」的情況,那麼$ act_fc數組是空的。
沒有做另一個preg_match只檢查「ACT FC」,有沒有辦法返回ACT_FC被發現?也許「unit」可能被迫填充數組,「value」可能爲空。
注意:我正在處理換行符之間的數據匹配,因此部分代碼很重要,以保持幾乎相同。
在這裏沒有理由使用非貪婪的量詞:'(?:。\ d +)*?'。不要忘記,點意味着任何字符(除了換行符)而不是字面點。爲了確定一個字面點,你需要將其轉義:'\ .'。如果你需要使用'''量詞'來選擇一些東西。 –