如何使用Regex将URL字符串分成多个部分

Ale*_*lex 0 php regex url

我有以下URL字符串

/category/category1/2010/12/10/id
Run Code Online (Sandbox Code Playgroud)

我需要将字符串分成几部分.我正在尝试这种模式

(?:(.*))?(?:(?:\/)?([0-9]{4}))?(?:(?:\/)?([0-9]{1,2}))?(?:(?:\/)?([0-9]{1,2}))?(?:(.*))?
Run Code Online (Sandbox Code Playgroud)

但它无法正常工作

如果URL是这样的/category/category1/,我需要以下变量

path = '/category/category1/';
year = '';
month = '';
day = '';
id ='';
Run Code Online (Sandbox Code Playgroud)

如果URL是这样的/category/category1/2010,我需要以下变量

path = '/category/category1/2010';
year = '2010';
month = '';
day = '';
id ='';
Run Code Online (Sandbox Code Playgroud)

如果URL是这样的/category/category1/2010/12/,我需要以下变量

path = '/category/category1/2010/12';
year = '2010';
month = '12';
day = '';
id ='';
Run Code Online (Sandbox Code Playgroud)

如果URL是这样的/category/category1/2010/12/10,我需要以下变量

path = '/category/category1/2010/12/10';
year = '2010';
month = '12';
day = '10';
id ='';
Run Code Online (Sandbox Code Playgroud)

如果URL是这样的/category/category1/2010/12/10/id,我需要以下变量

path = '/category/category1/2010/12/10/id';
year = '2010';
month = '12';
day = '10';
id ='id';
Run Code Online (Sandbox Code Playgroud)

是否可以使用preg_match和正则表达式?

Vot*_*ple 6

为什么不简单 explode('/', $url);

现在你已经有了一些URL片段.如果您还在验证后,您现在可以单独验证每个部分(存在),整个事情将更加清晰.