Php 如果一个组存在,但如果不存在,如何捕获该组,以匹配正则表达式的其余部分?
我有以下pcre正则表达式:Php 如果一个组存在,但如果不存在,如何捕获该组,以匹配正则表达式的其余部分?,php,regex,pcre,Php,Regex,Pcre,我有以下pcre正则表达式: ^(.+\/.*\.php)(\?)?(\/.+)$ 这个示例URL: /subdir/file.php/this/is/a/path/info?par=am1¶m=2 regex-previosuly在#1 group/subdir/file.php和#2 group/this/is/a/path/info?par=am1¶m=2中写入捕获 我需要将参数分成第四组(在?)之后。并获得以下信息: 组#1:/subdir/file.php
^(.+\/.*\.php)(\?)?(\/.+)$
这个示例URL:
/subdir/file.php/this/is/a/path/info?par=am1¶m=2
regex-previosuly在#1 group/subdir/file.php和#2 group/this/is/a/path/info?par=am1¶m=2中写入捕获
我需要将参数分成第四组(在?)之后。并获得以下信息:
组#1:/subdir/file.php
第三组:/this/is/a/path/info
第4组:par=am1和PARM=2
有时,URL没有参数。在这种情况下,我只需要匹配#1和#2组
我试过这个:
^(.+\/.*\.php)(\?)?(\/.+)(\?.*)$
但如果URL没有参数,则与#1和#3组不匹配(/subdir/file.php和/this/is/a/path/info)
我该怎么做
谢谢 您可以使用和来分割获得的路径:
$url = "/subdir/file.php/this/is/a/path/info?par=am1¶m=2";
$pth = parse_url($url, PHP_URL_PATH);
$chunks = preg_split('~(?<=\.php)(?=/)~', $pth);
foreach ($chunks as $chunk) {
echo $chunk . "\n"; // => /subdir/file.php and /this/is/a/path/info
}
echo parse_url($url, PHP_URL_QUERY) . "\n"; // => par=am1¶m=2
$url=“/subdir/file.php/this/is/a/path/info?par=am1¶m=2”;
$pth=parse_url($url,PHP_url_路径);
$chunks=preg_split('~(?您可以使用和也可以分割获得的路径:
$url = "/subdir/file.php/this/is/a/path/info?par=am1¶m=2";
$pth = parse_url($url, PHP_URL_PATH);
$chunks = preg_split('~(?<=\.php)(?=/)~', $pth);
foreach ($chunks as $chunk) {
echo $chunk . "\n"; // => /subdir/file.php and /this/is/a/path/info
}
echo parse_url($url, PHP_URL_QUERY) . "\n"; // => par=am1¶m=2
$url=“/subdir/file.php/this/is/a/path/info?par=am1¶m=2”;
$pth=parse_url($url,PHP_url_路径);
$chunks=preg_split('~(?parse_url
比复杂的regex@anubhava我之所以编写正则表达式是因为parse_url
在path参数上返回/subdir/test.php/this/is/a/path/info,我需要/this/is/a/path/info为什么不合并它们?使用parse_url
然后将正则表达式应用于path参数。像这样?^(.+\/.\.php)([^?]+)(\?.*)?$
解析url
比复杂的regex@anubhava我之所以编写正则表达式是因为parse_url
在path参数上返回/subdir/test.php/this/is/a/path/info,我需要/this/is/a/path/info为什么不合并它们?使用parse_url
然后将正则表达式应用于path参数。像这样e> ^(+\/.\.php)([^?]+)(\?.*)$
很好的解决方案!它比我的复杂正则表达式更简单。谢谢!很好的解决方案!它比我的复杂正则表达式更简单。谢谢!