我正在尝试提取与该结构%HOUSE%%CAR%相抗的.txt文件的所有单词
我使用的是Preg_match,它的工作原理是,但是当我在同一行中有两个单词时,数组将在一个位置返回两个在同一行中的单词
$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]中有两个词 我认为这是我的preg match表达式的问题,我需要添加一些
答案 0 :(得分:1)
默认情况下,使用*
字符的正则表达式将是“贪婪的”,这意味着它将匹配尽可能多的字符。在这种情况下,表达式.*
与IP_LAN% %MASK_LAN
匹配。
要将此行为更改为非贪婪(即尽可能少地匹配字符),请在星号后添加问号,以便您的模式变为/%.*?%/
。
或者,您可以更改方法,而不是多次匹配 any 字符,而可以多次匹配除百分号之外的任何字符:{{1 }}。