PHP正则表达式从URL获取文件名

Mar*_*all 1 php regex

我不太擅长正则表达式,但是我将如何将文件名与路径中的扩展名分开?

D:/DCIM/image10.jpg

D:/DCIM/image11.jpg

D:/DCIM/image12.jpg

D:/DCIM/image13.jpg

我会从对方那里得到 imagex.jpg 关于字符串,x 是一个数字。

所以基本上搜索“.jpg”然后获取所有其他字符直到“/”。

编辑: 啊,pathinfo 函数将完成这项工作,尽管为了将来的目的,知道如何使用 RegEx 做这样的事情会很好。

小智 5

来自 PHP 手册:

您可以使用pathinfo函数

<?php

$path = pathinfo('D:/DCIM/image10.jpg');
echo $path['filename'];

?>
Run Code Online (Sandbox Code Playgroud)

或者您可以使用basename函数通过扩展名获取它,而不必费心从 pathinfo 结果数组中捕获(文件名和扩展名):

<?php
echo basename('D:/DCIM/image10.jpg');
?>
Run Code Online (Sandbox Code Playgroud)

祝你好运!

编辑

如果你坚持,试试这个

<?php

$files = array(
    "D:/DCIM/image11.jpg",
    "C:\xampp\htdocs\index.php",
    "/usr/local/script.sh"
);

foreach ($files as $file) {
    preg_match("/[^\/|\\\]+$/", $file, $matches);
    var_dump($matches);   
}
?>
Run Code Online (Sandbox Code Playgroud)



在哪里

[^\/|\\\] 
Run Code Online (Sandbox Code Playgroud)

意味着您开始搜索斜杠,用反斜杠转义斜杠字符

[^\/
Run Code Online (Sandbox Code Playgroud)

或者您开始​​搜索反斜杠,用反斜杠转义反斜杠和括号字符。

|\\\]
Run Code Online (Sandbox Code Playgroud)

最后,您在给定字符串的末尾搜索任何内容,至少一次。

+$  
Run Code Online (Sandbox Code Playgroud)

我从这篇文章中汲取了概念,
希望对您有所帮助!