这是对此问题的跟进Use PHP to Get File Path/Extension from URL string
给定一个URL为http://i.imgur.com/test.png&stuff
的字符串如何获取文件名:test.png
没有查询参数?
如果我尝试使用建议的解决方案:parse_url($url, PHP_URL_PATH)
我得到/test.png&stuff
答案 0 :(得分:4)
不幸的是,它没有使用普通的URL字符串,因为它没有?分离出查询字符串。您可能想尝试一起使用几个不同的功能:
$path = parse_url($url, PHP_URL_PATH);
$path = explode('&',$path);
$filename = $path[0]; // and here is your test.png
答案 1 :(得分:2)
parse_url($url, PHP_URL_PATH) I get /test.png&stuff
那是因为你给它一个不包含查询字符串的URL。你的意思是/text.php?stuff
; 查询字符串由?
定义,而不是&
; &
用于附加其他变量。
要提取查询字符串,您需要PHP_URL_QUERY
,而不是PHP_URL_PATH
。
$x = "http://i.imgur.com/test.png?stuff";
parse_url($x, PHP_URL_QUERY); # "stuff"
答案 2 :(得分:0)
基于@ Mark Rushakoff回答最佳解决方案:
<?php
$path = "http://i.imgur.com/test.png?asd=qwe&stuff#hash";
$vars =strrchr($path, "?"); // ?asd=qwe&stuff#hash
var_dump(preg_replace('/'. preg_quote($vars, '/') . '$/', '', basename($path))); // test.png
?>