返回的preg_match两个字在阵列位置

问题描述 投票:0回答:1

我试图提取包含此结构HOUSE%%% CAR%.text的文件的所有单词

我使用的preg_match和It's的作品,但是当我在同一条线上两个词在一个位置上的数组中返回两个词都在同一行

$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]有两个词,例如我觉得这是我的预浸比赛表达的一个问题,我需要添加一些

php preg-match-all
1个回答
1
投票

默认情况下,使用*字符的正则表达式将是“贪婪”,这意味着它将尽可能多的字符匹配越好。在这种情况下,表达式.*是匹配IP_LAN% %MASK_LAN

要改变这种行为,以非贪婪,那就是尽可能少的字符匹配越好,星号后加一个问号,所以你的模式变得qazxsw POI。

或者,你可以改变你的方法和,而不是任意次数匹配任何字符,除了百分号匹配任何任意次数:/%.*?%/

© www.soinside.com 2019 - 2024. All rights reserved.