web-dev-qa-db-ja.com

URLに存在する変数値なしでPHPのURLからファイル名のみを取得する

PHPのURLから$ _GET変数値なしでファイル名を取得したいですか?

私のURLはhttp://learner.com/learningphp.php?lid=1348です

URLからlearningphp.phpのみを取得したいですか?

これを行う方法?助けてください。

Basenameを使用しましたが、URLにあるすべての変数値learntolearn.php?lid=1348も提供します。

38
sqlchild

これは動作するはずです:

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

ただし、URLの悪意のある部分には注意してください。

60
str

次の手順は、ファイル、拡張子のあるファイル、拡張子のないファイルを取得する方法に関する総合的な情報を示しています。このテクニックは私にとって非常に役立ちます。それがあなたにも役立つことを願っています。

  $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
19

Pekkaが言ったように 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

parse_urlを使用してパスのみを取得し、basenameでファイル名のみを取得することをお勧めします。これにより、クエリパラメータも回避されます。

<?php

// url to inspect
$url = 'http://www.example.com/image.jpg?q=6574&t=987';

// parsed path
$path = parse_url($url, PHP_URL_PATH);

// extracted basename
echo basename($path);

?>

パスのみを取得するためにcomponentparse_urlパラメーターを使用していることを除いて、 Sultan answer と多少似ています。

13
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'
3

次のコードを試してください:

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;
}