这是对这个问题的跟进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
这是对这个问题的跟进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
不幸的是,它没有使用普通的 URL 字符串,因为它没有 ? 分离出查询字符串。您可能想尝试同时使用几个不同的功能:
$path = parse_url($url, PHP_URL_PATH);
$path = explode('&',$path);
$filename = $path[0]; // and here is your test.png
parse_url($url, PHP_URL_PATH) I get /test.png&stuff
那是因为你给它一个不包含查询字符串的 URL。你的意思是/text.php?stuff
;查询字符串由a定义?
,而不是 a &
;&
用于附加附加变量。
要提取查询字符串,您需要PHP_URL_QUERY
,而不是PHP_URL_PATH
。
$x = "http://i.imgur.com/test.png?stuff";
parse_url($x, PHP_URL_QUERY); # "stuff"
基于@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
?>