Ответ 1
Это должно работать:
echo basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);
Но будьте осторожны с вредоносными компонентами вашего URL.
Я хочу получить имя файла без каких-либо значений переменной $_GET из URL-адреса в php?
Мой url http://learner.com/learningphp.php?lid=1348
Я хочу только извлечь learningphp.php
из URL-адреса?
Как это сделать? Пожалуйста, помогите.
Я использовал basename, но он также дает все значения переменных - learntolearn.php?lid=1348
, которые находятся в URL-адресе.
Это должно работать:
echo basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);
Но будьте осторожны с вредоносными компонентами вашего URL.
Используйте parse_url()
, как сказал Пекка:
<?php
$url = 'http://www.example.com/search.php?arg1=arg2';
$parts = parse_url($url);
$str = $parts['scheme'].'://'.$parts['host'].$parts['path'];
echo $str;
?>
В этом примере необязательное имя пользователя и пароль не выводятся!
$url = 'http://www.nepaltraveldoor.com/images/trekking/nepal/annapurna-region/Annapurna-region-trekking.jpg';
$file = file_get_contents($url); // to get file
$name = basename($url); // to get file name
$ext = pathinfo($url, PATHINFO_EXTENSION); // to get extension
$name2 =pathinfo($url, PATHINFO_FILENAME); //file name without extension
Вы можете использовать
$directoryURI =basename($_SERVER['SCRIPT_NAME']);
echo $directoryURI;
Попробуйте использовать следующий код:
Для PHP 5.4.0 и выше:
$filename = basename(parse_url('http://learner.com/learningphp.php?lid=1348')['path']);
Для версии PHP < 5.4.0
$parsed = parse_url('http://learner.com/learningphp.php?lid=1348');
$filename = basename($parsed['path']);
$url = "learner.com/learningphp.php?lid=1348";
$l = parse_url($url);
print_r(stristr($l['path'], "/"));
Другой способ получить только имя файла без querystring - использовать функции parse_url и basename:
$parts = parse_url("http://example.com/foo/bar/baz/file.php?a=b&c=d");
$filename = basename($parts["path"]); // this will return 'file.php'
Используйте эту функцию:
function getScriptName()
{
$filename = baseName($_SERVER['REQUEST_URI']);
$ipos = strpos($filename, "?");
if ( !($ipos === false) ) $filename = substr($filename, 0, $ipos);
return $filename;
}
Лучше использовать parse_url
для извлечения только пути, а затем получения только имени файла с помощью basename
. Таким образом, мы также избегаем параметров запроса.
<?php
$url = 'http://www.example.com/image.jpg?q=6574&t=987'
$path = parse_url($url, PHP_URL_PATH);
echo basename($path);
?>
Как-то похоже на ответ султана, за исключением того, что я использую параметр component
parse_url
, чтобы получить только путь.
$filename = pathinfo( parse_url( $url, PHP_URL_PATH ), PATHINFO_FILENAME );
Используйте parse_url для извлечения пути из URL-адреса, затем pathinfo возвращает имя файла из пути