PhP Regex或Basename()

时间:2012-04-28 00:24:55

标签: php regex

我正在尝试从包含以下内容的文件列表中提取文件名:

/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()更好/更好。

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

1 个答案:

答案 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 )

实例:http://codepad.viper-7.com/ewkUHs