Match stien til en URL-adresse, minus filnavnsudvidelsen

Hvad ville være det bedste regulære udtryk for dette scenario?

I betragtning af denne URL:

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

Hvordan skal jeg gå til at vælge alt mellem (men ikke inklusive) http://php.net og .php:

/manual/en/function.preg-match

Dette er for en Nginx konfigurationsfil.

Løsning

Som denne:


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

Prøv dette:

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

Denne generelle URL-match giver dig mulighed for at vælge dele af en URL:

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 = "";
}
Kommentarer (0)