1
我使用下面的代碼:PHP的preg_match匹配的東西或沒有輸出assoc命令陣列
<?php
$pattern = "/(?<item>.*)\:(?<value>.*)(\{(?<flag>.*)_(?<level>.*)\})/i";
$subject = "item:value{L_300}";
preg_match($pattern, $subject, $matches);
print_r($matches);
這將輸出如下:
array(
array (
0 => 'item:value{L_300}',
'item' => 'item',
1 => 'item',
'value' => 'value',
2 => 'value',
3 => '{L_300}',
'flag' => 'L',
4 => 'L',
'level' => '300',
5 => '300'
)
)
我的問題是,受試者不會總是包含'{L_300}'部分,但我仍然需要使用該模式匹配'item:value'部分。
任何人都可以幫忙嗎?
這可能看起來像一個常見問題,但我找不到答案。
你確定你發佈了正確的模式嗎?您發佈的內容不會匹配「L_300」或任何大括號,它只匹配冒號後的所有內容。 – eWolf
您正在獲取'flag'和'level'的捕獲,這是您在正則表達式中沒有定義的。對我來說似乎很神奇。那,或錯誤的代碼發佈。 – lanzz
對不起,我用我使用的實際模式更新了它。 – user1094128