0

我正在尝试从具有以下路径的文件列表中提取文件名:

/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() 是否更好/可能。

我想要实现的目标是将所有匹配的字符串放入一个数组中。不知道我这样做是否正确。

4

1 回答 1

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 )

现场示例:http ://codepad.viper-7.com/ewkUHs

于 2012-04-28T00:36:34.110 回答