Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中为重写规则构建正则表达式?_Php_Regex_Url Rewriting - Fatal编程技术网

如何在PHP中为重写规则构建正则表达式?

如何在PHP中为重写规则构建正则表达式?,php,regex,url-rewriting,Php,Regex,Url Rewriting,我目前正试图在WordPress中为url编写重写规则。原始URL如下所示: http://localhost/download/d0RqYU8xek9JOXBsQmJrRGpldWF2QT09/?selected_files%5B0%5D=TURUWEdaWWNtS1ZOd2NSY0MybThCQT09&selected_files%5B1%5D=cWhFVEtlOENNM0VwNmlrUlBmOVF1UT09 /download/后面的第一个值是特定文件存储的唯一标识符。之后,我添

我目前正试图在WordPress中为url编写重写规则。原始URL如下所示:

http://localhost/download/d0RqYU8xek9JOXBsQmJrRGpldWF2QT09/?selected_files%5B0%5D=TURUWEdaWWNtS1ZOd2NSY0MybThCQT09&selected_files%5B1%5D=cWhFVEtlOENNM0VwNmlrUlBmOVF1UT09
/download/后面的第一个值是特定文件存储的唯一标识符。之后,我添加了一个文件数组

在WordPress中,我现在想为这个请求编写一个重写URL,以便在后端处理它。为此,我需要一个特定的正则表达式来标识请求并返回用于构建重写url的匹配项:

public function filter_rewrite_rules_array( $rules ): array {
    $new_rules['download/([0-9][a-z][A-Z]+)/.......'] = admin_url( 'admin-ajax.php' ) . '?download=$matches[1]&selected_files=$matches[2]';
    return array_merge( $rules, $new_rules );
}
关键是我无法完成正则表达式。。。。有人能帮我吗?即使是第一场比赛也不行

更新:

我期待这个URL的结果:

http://localhost/admin-ajax.php?download=d0RqYU8xek9JOXBsQmJrRGpldWF2QT09&selected_files%5B0%5D=TURUWEdaWWNtS1ZOd2NSY0MybThCQT09&selected_files%5B1%5D=cWhFVEtlOENNM0VwNmlrUlBmOVF1UT09
正如我刚才看到的,请求可以有多个文件ID。所以不知道如何用正则表达式来完成。这可能吗?

您可以尝试:

.*?\/download\/(.*?)\/\?(.*)
对上述正则表达式的解释:

*?-惰性地匹配\download之前的所有内容

\/下载\/匹配项/下载/按字面意思

*?-表示与您所需的唯一id匹配的捕获组,即与/?懒洋洋地

.*-表示与url其余部分匹配的第二个捕获组

更换零件:自零件http://localhost/admin-ajax.php?download= 是静态的;您可以将其与捕获的组一起使用,即。http://localhost/admin-ajax.php?download=一美元和二美元


您可以在

中找到上述正则表达式的演示,请添加您的预期结果。@Mandy8055完成!这部分是静态的:http://localhost/admin-ajax.php?download= 其余的是动态的。@Mandy8055是的!谢谢。请将其作为答案发布,以便我给您打勾: