Preg 匹配 Return 数组位置中的两个单词

Preg Match Return Two Word in Array Position

我正在尝试提取包含此结构 %HOUSE% %CAR%

的 .txt 文件的所有单词

我正在使用 Preg_match 并且它可以工作但是当我在同一行中有两个词时数组 return 在同一行中的两个词 [=12] =]

$rawContent = file($_FILES["file"]["tmp_name"]); 
$content = implode(" ",$rawContent);    
preg_match_all("/%.*%/",$content,$arrMatches");

Array ( [0] => %HOSTNAME% [1] => %INTERFAZ_LAN% [2] => %IP_LAN% %MASK_LAN% [3] => %ID_INTERFACE_WAN% )

在位置[2]有两个字例如 我认为这是我的预匹配表达式的问题我需要添加一些

默认情况下,使用 * 字符的正则表达式将为 "greedy",这意味着它将匹配尽可能多的字符。在这种情况下,表达式 .* 匹配 IP_LAN% %MASK_LAN.

要将此行为更改为非贪婪,即匹配尽可能少的字符,请在星号后添加一个问号,这样您的模式就变成了/%.*?%/

或者,您可以改变您的方法,而不是多次匹配 任何 字符,而是匹配 除了百分号 之外的任何字符任意次数:/%[^%]*%/.