如何在PHP中为重写规则构建正则表达式?
我目前正试图在WordPress中为url编写重写规则。原始URL如下所示:如何在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/后面的第一个值是特定文件存储的唯一标识符。之后,我添
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是的!谢谢。请将其作为答案发布,以便我给您打勾: