wake-up-neo.com

Holen Sie sich nur den Dateinamen von der URL in PHP ohne Variablenwerte, die in der URL vorhanden sind

Ich möchte Dateinamen ohne $ _GET-Variablenwerte von einer URL in PHP erhalten?

Meine URL ist http://learner.com/learningphp.php?lid=1348

Ich möchte nur den learningphp.php von der URL abrufen?

Wie macht man das? Bitte helfen Sie.

Ich habe basename verwendet, aber es gibt alle Variablenwerte -learntolearn.php?lid=1348, die in der URL stehen.

33
sqlchild

Das sollte funktionieren:

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

Aber hüten Sie sich vor schädlichen Teilen in Ihrer URL.

47
str

Verwenden Sie parse_url() , wie Pekka sagte:

<?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

In diesem Beispiel werden der optionale Benutzername und das Passwort nicht ausgegeben!

18
ComFreek

Die folgenden Schritte zeigen Gesamtinformationen zum Abrufen von Datei, Datei mit der Erweiterung und Datei ohne Erweiterung. Diese Technik ist für mich sehr hilfreich. Ich hoffe, es wird auch für Sie hilfreich sein.

  $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

Es ist besser, parse_url zu verwenden, um nur den Pfad abzurufen und dann nur den Dateinamen mit der basename abzurufen. Auf diese Weise vermeiden wir auch Abfrageparameter.

<?php
$url = 'http://www.example.com/image.jpg?q=6574&t=987'
$path = parse_url($url, PHP_URL_PATH);
echo basename($path);
?>

Ist etwas ähnlich wie Sultan answer , außer dass ich componentparse_url-Parameter verwende, um nur den Pfad zu erhalten. 

8
foxtrot

Sie können verwenden,

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

echo $directoryURI;
5
SwR

Eine andere Möglichkeit, nur den Dateinamen ohne Querzeichenfolge zu erhalten, ist die Verwendung der Funktionen parse_url und 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

Versuchen Sie den folgenden Code:

Für PHP 5.4.0 und höher:

$filename = basename(parse_url('http://learner.com/learningphp.php?lid=1348')['path']);

Für PHP Version <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 ); 

Verwenden Sie parse_url, um den Pfad aus der URL zu extrahieren. Anschließend gibt pathinfo den Dateinamen aus dem Pfad zurück

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

Verwenden Sie diese Funktion:

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