it-swarm.com.ru

Получить только имя файла из URL в PHP URL-адреса

Я хочу получить имя файла без каких-либо значений переменной $ _GET из URL в php?

Мой URL-адрес http://learner.com/learningphp.php?lid=1348

Я хочу получить только learningphp.php из URL?

Как это сделать? Пожалуйста помоги.

Я использовал basename, но он также дает все значения переменных - learntolearn.php?lid=1348, которые находятся в URL.

33
sqlchild

Это должно работать:

echo basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);

Но остерегайтесь любых вредоносных частей в вашем URL.

47
str

Используйте 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;
?>

http://codepad.org/NBBf4yTB

В этом примере необязательные имя пользователя и пароль не выводятся!

18
ComFreek

Следующие шаги показывают общую информацию о том, как получить файл, файл с расширением, файл без расширения. Эта техника очень полезна для меня. Надеюсь, это будет полезно и вам.

  $url = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_120x44dp.png';
        $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
15
Khadka Pushpendra

Лучше использовать 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);
?>

Отчасти похоже на ответ Султана за исключением того, что я использую параметр componentparse_url, чтобы получить только путь. 

8
foxtrot

Ты можешь использовать,

$directoryURI =basename($_SERVER['SCRIPT_NAME']);

echo $directoryURI;
5
SwR

Другой способ получить только имя файла без строки запроса - использовать функции 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'
2
ᴄʀᴏᴢᴇᴛ

Попробуйте следующий код:

Для 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']);
2
Sultan
$filename = pathinfo( parse_url( $url, PHP_URL_PATH ), PATHINFO_FILENAME ); 

Используйте parse_url для извлечения пути из URL, затем pathinfo возвращает имя файла из пути

1
James
$url = "learner.com/learningphp.php?lid=1348";
$l = parse_url($url);
print_r(stristr($l['path'], "/"));
1
Mob

Используйте эту функцию:

function getScriptName()
{
    $filename = baseName($_SERVER['REQUEST_URI']);
    $ipos = strpos($filename, "?");
    if ( !($ipos === false) )   $filename = substr($filename, 0, $ipos);
    return $filename;
}
0