PHP: Dateinamen und Parameter aus URL entfernen

Den Dateinamen und Parameter aus einer URL abschneiden.

Für ein Script brauchte ich den aktuellen Pfad der URL des Scriptes. Die URL zum Script war noch einfach zu ermitteln, allerdings hingen hier noch der Dateiname, z.B. “index.html” oder eventuelle Parameter dran. Folgende Funktion entfernt diese:

/**
 * Entfernt den Dateinamen und von der URL sofern vorhanden,
 * fügt einen / am Ende hinzu
 * @param $link
 * @param bool $addTrailingSlash - Slash am Ende anfügen?
 * @return array|mixed|string|string[]
 */
function getUrlFolder($link, $addTrailingSlash = true) {

    //remove params
    $pos = strpos($link, "?");
    if ($pos !== false) {
        $link = substr($link, 0, $pos);
    }

    //remove extenstion
    $file_info = pathinfo($link);
    if (isset($file_info['extension'])) {
       $link = str_replace($file_info['filename'] . "." . $file_info['extension'], "", $link);
    }

    //trailing slash
    if (!endsWith($link, "/") && $addTrailingSlash) {
        $link .= "/";
    }

    return $link;
}

/**
 * Hilfsfunktion für Stringende
 * @param string $haystack
 * @param string $needle
 * @return boolean
 */
function endsWith($haystack, $needle)
{
    $length = strlen($needle);
    if ($length == 0) {
        return true;
    }

    return (substr($haystack, -$length) === $needle);
}

Wahlweise kann getUrlFolder auch einen Slash am Ende hinzufügen (Standard) oder nicht. Ein Beispiel:

$url1 = "https://www.google.com/search?q=php+remove";
$url2 = "https://secure.da-software.de/Installationsanleitung/Lizenz/index.html";
$url3 = "https://da-software.net/support/installationservice-fuer-php-formmail-scripte/";
$url4 = "https://da-software.net/support/installationservice-fuer-php-formmail-scripte";
$url5 = "https://da-software.net/support/installationservice-fuer-php-formmail-scripte?param=1";
$url6 = "https://da-software.net/support/installationservice-fuer-php-formmail-scripte/index.php?param=1";

echo getUrlFolder($url1) . "<br/>\n";
echo getUrlFolder($url2) . "<br/>\n";
echo getUrlFolder($url3) . "<br/>\n";
echo getUrlFolder($url4) . "<br/>\n";
echo getUrlFolder($url5) . "<br/>\n";
echo getUrlFolder($url6) . "<br/>\n";

Die Ausgabe:

https://www.google.com/search/
https://secure.da-software.de/Installationsanleitung/Lizenz/

Installationservice für PHP-Formmail-Scripte

Installationservice für PHP-Formmail-Scripte

Installationservice für PHP-Formmail-Scripte


https://da-software.net/support/installationservice-fuer-php-formmail-scripte/

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert