我正在尝试从包含以下内容的文件列表中提取文件名:
/a/b/c/d/file1.jpg
/e/f/g/h/file2.png
/i/j/k/l/file3.txt
我想获得一个有效文件名(对于linux)的字符串,它在“/”之间是一个jpeg文件(以“.jpg”结尾)。 在此示例中,“file1”将是唯一有效的匹配。
目前我有这个RegEx:
/(?<=\/)(.*?)(?=\.(js))/gim
我真的不知道用RegEx做这个是否更好,或者用basename()更好/更好。
我想要实现的目标是将匹配的所有字符串放在一个数组中。 不知道我是否正确行事。
答案 0 :(得分:1)
此处不需要正则表达式。我以为你可以把你的路径变成阵列。
<?php
$text = file_get_contents("list.txt");
$foo = explode(PHP_EOL, $text);
$bar = array();
foreach($foo as $key => $value){
if(pathinfo($value, PATHINFO_EXTENSION) == "jpg"){
$bar[] = basename($foo[$key],".".pathinfo($value, PATHINFO_EXTENSION));
}
}
print_r($bar);
?>
输出:
Array ( [0] => file1 )