为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
收到一只叮咚 2023-06-18 15:58:25
我目前正在尝试为 WordPress 中的 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。所以不知道如何使用正则表达式完成此操作。这可能吗?
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

您可以尝试:

.*?\/download\/(.*?)\/\?(.*)

上述正则表达式的解释:

.*?-懒惰地匹配之前的一切\download

\/download\/-/download/逐字匹配。

(.*?)- 表示匹配您需要的唯一 ID 的捕获组,即在/? 懒惰之前匹配任何内容。

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

替换零件:由于零件http://localhost/admin-ajax.php?download=是静态的;您可以将它与捕获的组一起使用,即http://localhost/admin-ajax.php?download=$1&$2

//img1.sycdn.imooc.com//648eb93d0001233806520104.jpg

您可以在此处找到上述正则表达式的演示


查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信