Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从文件列表中返回文件名_Php_Regex - Fatal编程技术网

Php 从文件列表中返回文件名

Php 从文件列表中返回文件名,php,regex,Php,Regex,所以我有一个文件名列表,我想把它拉出来,然后把每个文件名放到一个数组中 下面是我将尝试从中提取数据的列表示例: ------------- PENDING: (fs) gm_construct.bsp PENDING: (fs) gm_flatgrass.bsp ... 正则表达式是否能够解析此列表并仅提取以下位: gm_construct gm_flatgrass 比如说 然后需要将每个条目推送到一个数组中 此表达式是否也能够在比此长得多的列表中运行,并处理不同的前缀,如: ttt_t

所以我有一个文件名列表,我想把它拉出来,然后把每个文件名放到一个数组中

下面是我将尝试从中提取数据的列表示例:

------------- 
PENDING: (fs) gm_construct.bsp 
PENDING: (fs) gm_flatgrass.bsp
...
正则表达式是否能够解析此列表并仅提取以下位:

gm_construct
gm_flatgrass
比如说

然后需要将每个条目推送到一个数组中

此表达式是否也能够在比此长得多的列表中运行,并处理不同的前缀,如:

ttt_terrortown
伪代码:

str.replaceAll("PENDING: (fs) ", "");
str.replaceAll(".bsp", "");
str.replaceAll("-", "");

str[] = str.split("\n");
str[]将包含您的文件名列表

这基本上替换了所有“挂起的”内容和“.bsp”内容,并拆分了行

希望这有帮助


另外,这根本不需要正则表达式!(越容易越好)

最后,一个朋友想出了一个小正则表达式来做我想做的事。可能没有其他答案那么简单,但这是我个人将要使用的答案,对于我的用例来说效果很好

preg_match_all("/(?<=fs\)).*?(?=\.bsp)/", $maps, $map_list);

preg\u match\u all(“/”(?你不认为你可以删除
PENDING:(fs)
,修剪,然后得到一个子字符串,直到第一个
?不需要正则表达式。但是,这对所有文件名都有效吗?因为这个列表实际上只是一个长字符串。遍历行,只获取以
PENDING:(fs)开头的子字符串
,然后拆下、修剪等。