PHP - 如何从url字符串中获取文件名

时间:2013-10-28 20:14:54

标签: php

这是对此问题的跟进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

3 个答案:

答案 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
?>
  1. Regular Expression to collect everything after the last /
  2. How to get file name from full path with PHP?