URLのパスからファイル名の拡張子を除いたものにマッチします。

このシナリオでは、どのような正規表現が最適でしょうか?

このURLが与えられています。

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

http://php.net.php` の間のすべてを選択するにはどうしたらよいでしょうか。

/manual/en/function.preg-match

これはNginxの設定ファイル用です。

ソリューション

こんな感じで。


if (preg_match('/(?
解説 (2)

試してみてください。

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

この一般的なURLマッチでは、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 = "";
}
解説 (0)