Potrivește calea unui URL, fără extensia numelui de fișier

Care ar fi cea mai bună expresie regulată pentru acest scenariu?

Având în vedere acest URL:

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

Cum ar trebui să procedez pentru a selecta tot ce se află între (dar fără a include) http://php.net și .php:

/manual/en/function.preg-match

Aceasta este pentru un fișier de configurare Nginx.

Soluția

Așa:


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

Încearcă asta:

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

Această potrivire generală a URL-urilor vă permite să selectați părți ale unui 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 = "";
}
Comentarii (0)