我目前正在嘗試為 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
。
您可以在此處找到上述正則表達式的演示。
- 1 回答
- 0 關注
- 110 瀏覽
添加回答
舉報
0/150
提交
取消