Wie kann man mit php teil einer URL auslesen?
Guten Abend, ich wollte fragen, wie man mit php einen teil einer url ausliest. Undzwar ist die url bsp. localhost/Bla/test.php und ich möchte nur das Test haben ohne.php und ohne alles davor. Bis jetzt habe ich
$welche = $_SERVER["SERVER_NAME"] . $_SERVER["PHP_SELF"];
$titel = explode('.php',$welche);
$aktuelleseite = $titel[count($titel)-2];
dann zeigt er mir an: localhost/Bla/test
und wenn ich
$welche = $_SERVER["SERVER_NAME"] . $_SERVER["PHP_SELF"];
$titel = explode('/',$welche);
$aktuelleseite = $titel[count($titel)-1];
das zeigt ann: test.php. Vielen dank.
5 Antworten
Es gibt hier ja schon eine Menge guter Antworten, wollte nur noch mal auf die PHP Funktion parse_url() hinweisen.
http://php.net/manual/de/function.parse-url.php
Hier bekomnst Du, neben vielen anderen Infos, den Pfad zurück.
$parseInfo=parse_url($URL);
Wenn Du den pfad in ein array wandelst,
$parseInfo=parse_url($URL);
$pfadelemente=split("/",$parseInfo['path']);
var_dump($pfadelemente);
hast Du Scheme, Host, Querystrings, und Endungen schon weg.
Jetzt kannst Du problemlos auf die einzelnen array-Elemente, also die Pfadfragmente, zugreifen.
So würde ich das lösen:
function getScriptName()
{
$url = trim($_SERVER['REQUEST_URI'], "/");
$parts = explode("/", $url);
if(count($parts))
{
$last = array_pop($parts);
if(strpos($last, ".php") !== false)
{
return str_replace(".php", "", $last);
}
}
return false;
}
$aktuelleseite = getScriptName();
if($aktuelleseite)
{
echo $aktuelleseite;
}
else
{
echo "Kein Php-Skript";
}
Du kannst auch beide scripte nacheinander durchlaufen lassen...
mit $_SERVER['SCRIPT_NAME'];?
Das kannst du mithilfe von Regulären Ausdrücken lösen, verwende die Methode preg_replace:
$str = "localhost/Bla/test.php";
$ret = preg_replace("~^localhost/Bla/(\w+).php$~", "$1" , $str);
echo $ret; //Ergebnis: test
Okay dann ist diese Lösung perfekt. Versuch es einfach mal, hab dir hier ein Snippet erstellt:
http://sandbox.onlinephpfunctions.com/code/383303465d63eade1caca90996608dc4b631f8e2
aber ich kann die url nicht angeben, da es immer eine unterschiedliche ist