Как я могу создать регулярное выражение для правила перезаписи в PHP? - PullRequest
0 голосов
/ 18 июня 2020

Я сейчас пытаюсь написать правило перезаписи URL-адреса в WordPress. Исходный URL-адрес выглядит так:

http://localhost/download/d0RqYU8xek9JOXBsQmJrRGpldWF2QT09/?selected_files%5B0%5D=TURUWEdaWWNtS1ZOd2NSY0MybThCQT09&selected_files%5B1%5D=cWhFVEtlOENNM0VwNmlrUlBmOVF1UT09

Первое значение после /download/ - это уникальный идентификатор для указанного c файлового хранилища. После этого я добавил массив файлов.

В WordPress я хочу написать URL перезаписи для этого запроса, чтобы я мог обрабатывать его в моем бэкэнде. Для этого мне нужно специальное c регулярное выражение, которое идентифицирует запрос и возвращает совпадения для построения моего 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

Как я только что теперь увидел - запрос может иметь несколько идентификаторов файлов. Так что не знаю, как это сделать с помощью регулярного выражения. Возможно ли это вообще?

1 Ответ

1 голос
/ 18 июня 2020

Вы можете попробовать:

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

Объяснение приведенного выше регулярного выражения:

.*? - Лениво соответствует всему до \download.

\/download\/ - соответствует /download/ буквально.

(.*?) - представляет группа захвата, соответствующая уникальному идентификатору, который вам нужен, т.е. соответствует чему-либо до /? лениво .

(.*) - представляет вторую группу захвата, соответствующую остальной части часть url.

Запасная часть: Поскольку часть http://localhost/admin-ajax.php?download= статична; вы можете использовать его вместе с захваченными группами, т.е. http://localhost/admin-ajax.php?download=$1&$2.

Picotrial Representation

You can find the demo of the above regex in здесь.

...