У меня есть вот такой url http://nightlifer.new-norm.pro/test/apiBaseClass/getHeaders/?id="3,5"&page=1
.
Хочу чтобы запрос обрабатывался в вот таком виде http://nightlifer.new-norm.pro/test/?apiBaseClass.getHeaders={"id":[3,5],"page":1}
.
Пробовал вот так:
add_action('init', 'do_rewrite');
function do_rewrite(){
add_rewrite_rule( '^test/([^/]*)/([^/]*)/?id=$ids&page=$page', 'test/?$matches[1].$matches[2]={"id":$ids,"page":$page}', 'top' );
}
В итоге у меня ничего не вышло...
1) Строка (http://nightlifer.new-norm.pro/test/apiBaseClass/getHeaders/?id="3,5"&page=1
) не начинается со слово 'test' а в синтаксисе регулярных выражений знак ^
означает начало строки, то есть искомое выражение должно было находиться в начале строки.
2) Всегда в регулярных выражениях надо Экранировать специальные символы, то есть
`^test/([^/]*)/([^/]*)` надо заменить на `^test\/([^\/]*)\/([^\/]*)`
Пример отдельной экранировки символа в регулярном вырожении /
-> \/
То есть обратный слеш выводит следующий символ так как он есть и он не
применяется как специальный символ.
Решение вашего вопроса:
function do_rewrite(){
add_rewrite_rule( '\/test\/([^\/]*)\/([^\/]*)\/?id=$ids&page=$page', 'test/?$matches[1].$matches[2]={"id":$ids,"page":$page}', 'top' );
}
Регулярка работает по следующему принцыпу:
ищет в строке /test/
а после этого должно обязательно быт два выражения отделенные по символу /
, но если у вас после определенного выражения будет больше или меньше двух выражений то надо будет уточнить детали, и я обновлю ответ.
RegExr: Обучение, сборка и тестирование RegEx
Удачи!
Всем приветУ меня есть поле ввода от 0 до 10, как мне сделать так, что бы в данном поле по умолчанию всегда стояла цифра 0?