Entspricht dem Pfad einer URL, abzüglich der Dateinamenerweiterung

Was wäre der beste reguläre Ausdruck für dieses Szenario?

Angesichts dieser URL:

http://php.net/manual/en/function.preg-match.php

Wie sollte ich vorgehen, um alles zwischen (aber nicht einschließlich) http://php.net und .php auszuwählen:

/manual/en/function.preg-match

Dies ist für eine Nginx Konfigurationsdatei.

Lösung

Zum Beispiel so:


if (preg_match('/(?
Kommentare (2)

Versuchen Sie dies:

preg_match("/net(.*)\.php$/","http://php.net/manual/en/function.preg-match.php", $matches);
echo $matches[1];
// prints /manual/en/function.preg-match
Kommentare (0)

Diese allgemeine URL-Übereinstimmung ermöglicht es Ihnen, Teile einer URL auszuwählen:

if (preg_match('/\\b(?Phttps?|ftp):\/\/(?P[-A-Z0-9.]+)(?P\/[-A-Z0-9+&@#\/%=~_|!:,.;]*)?(?P<parameters>\\?[-A-Z0-9+&@#\/%=~_|!:,.;]*)?/i', $subject, $regs)) {
    $result = $regs['file'];
    //or you can append the $regs['parameters'] too
} else {
    $result = "";
}
Kommentare (0)