Correspond au chemin d'accès d'une URL, sans l'extension du nom de fichier.

Quelle serait la meilleure expression régulière pour ce scénario ?

Étant donné cette URL :

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

Comment dois-je procéder pour sélectionner tout ce qui se trouve entre (mais non compris) http://php.net et .php :

/manual/en/function.preg-match

Ceci est pour un fichier de configuration de [Nginx][1].

[1] : http://en.wikipedia.org/wiki/Nginx

Solution

Comme ça :


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

Essayez ça :

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

Cette correspondance générale d'URL vous permet de sélectionner des parties d'une 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 = "";
}
Commentaires (0)