PhP正则表达式或Basename()

PhP正则表达式或Basename(),php,regex,Php,Regex,我正在尝试从文件列表中提取文件名,路径如下: /a/b/c/d/file1.jpg /e/f/g/h/file2.png /i/j/k/l/file3.txt 我想得到一个字符串,它是一个有效的文件名(对于linux),介于“/”和jpeg文件之间(以“.jpg”结尾)。 在本例中,“file1”是唯一有效的匹配项 目前我有一个正则表达式: /(?<=\/)(.*?)(?=\.(js))/gim /(?这里不需要正则表达式。我假设您可以将路径放入数组中 <?php $te

我正在尝试从文件列表中提取文件名,路径如下:

/a/b/c/d/file1.jpg
/e/f/g/h/file2.png
/i/j/k/l/file3.txt
我想得到一个字符串,它是一个有效的文件名(对于linux),介于“/”和jpeg文件之间(以“.jpg”结尾)。 在本例中,“file1”是唯一有效的匹配项

目前我有一个正则表达式:

/(?<=\/)(.*?)(?=\.(js))/gim

/(?这里不需要正则表达式。我假设您可以将路径放入数组中

<?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);
?>

活生生的例子:

好吧,你可以忘记basename.regex>basename(我的意见)嗯,好的。我想是正则表达式。首先感谢你的快速回答!我实际上不知道这是否有效,因为我要解析的块是一个.txt文件,并且我没有每行中只有作为内容的路径。在这种情况下,你必须先构建数组。你如何将数据放入脚本中?如果你有一个字符串y您可以这样做:$lines=explode(PHP_EOL,$content);$lines成为一个数组,explode按EOL(行尾)分割字符串,$content参数是您的输入字符串。我还没有编写文件I/O的代码,但我想导入数据,谢谢fopen()。类似于:$text=file\u get_contents(“list.txt”);但是RegEx部分是我真正坚持的部分。我已经更新了我的答案。就我个人而言,我建议尽可能避免使用RegEx;)
Array ( [0] => file1 )