Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php True正则表达式以捕获wordpress子页面永久链接_Php_Regex_Wordpress_Mod Rewrite_Preg Match - Fatal编程技术网

Php True正则表达式以捕获wordpress子页面永久链接

Php True正则表达式以捕获wordpress子页面永久链接,php,regex,wordpress,mod-rewrite,preg-match,Php,Regex,Wordpress,Mod Rewrite,Preg Match,我有wordpress regex'(get/(.*)),它非常适合以下地址 http://localhost/akasia/get/gulets/for/sale/ 我的问题是此代码与以下url不匹配 http://localhost/akasia/var/var/get/gulets/for/sale/ http://localhost/akasia/var/get/gulets/for/sale/var/ http://localhost/akasia/var/var/get/gul

我有wordpress regex'(get/(.*)),它非常适合以下地址

http://localhost/akasia/get/gulets/for/sale/
我的问题是此代码与以下url不匹配

http://localhost/akasia/var/var/get/gulets/for/sale/

http://localhost/akasia/var/get/gulets/for/sale/var/

http://localhost/akasia/var/var/get/gulets/for/sale/var/var

http://localhost/akasia/n..0/var/var/get/gulets/for/sale/var/var/n..0
Regex buddy与之匹配,但wordpress Regex不匹配

“.(get/()?)”、“(?+)(get/()?)”和各种正则表达式都不起作用

我不明白它为什么不起作用

注意:使用$matches[]检索匹配URL的值时,捕获组数据从1开始,而不是从0开始

这是我的密码

add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
    $newrules = array(
        '(get/(.*)?)' => 'index.php?&get=$matches[1]',
        //'for/([^/]+)?' => 'index.php?for=$matches[1]',
    );
    return $newrules + $rules;
}

function get_rewrite_rules(){
    // return get_option('rewrite_rules');
    global $wp_rewrite; 
    return $wp_rewrite->rewrite_rules();
}

add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
    $vars[] = 'get';
    $vars[] = 'for';
    return $vars;
}

function get_flush_rewrite_rules() {
    $rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
    if (!isset($rules['(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
        press('Regex kurallari guncellendi. Bu normal degil. Admin\'i haberdar edin.');
        flush_rewrite_rules();
    }
}
add_filter('init', 'get_flush_rewrite_rules');

更新数天+数小时后,我发现regex buddy是真的。以下筛选器不工作

add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
    $newrules = array(
        '(get/(.*)?)' => 'index.php?get=$matches[1]',
    );
    return $newrules + $rules;
}
add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
    $newrules = array(
        '(get/(.*)?)' => 'index.php?get=$matches[1]',
    );
    return $newrules + $rules;
}
你应该用这个来代替它

function create_rewrite_rule() {
    add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
function create_rewrite_rule() {
    add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
您的代码应该是这样的

function create_rewrite_rule() {
    add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);

function get_rewrite_rules(){
    // return get_option('rewrite_rules');
    global $wp_rewrite; 
    return $wp_rewrite->rewrite_rules();
}

add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
    $vars[] = 'get';
    $vars[] = 'for';
    return $vars;
}

function get_flush_rewrite_rules() {
    $rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
    if (!isset($rules['--(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
        flush_rewrite_rules();
    }
}
add_filter('init', 'get_flush_rewrite_rules');
function create_rewrite_rule() {
    add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);

function get_rewrite_rules(){
    // return get_option('rewrite_rules');
    global $wp_rewrite; 
    return $wp_rewrite->rewrite_rules();
}

add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
    $vars[] = 'get';
    $vars[] = 'for';
    return $vars;
}

function get_flush_rewrite_rules() {
    $rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
    if (!isset($rules['--(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
        flush_rewrite_rules();
    }
}
add_filter('init', 'get_flush_rewrite_rules');
希望帮助一些人


注意:获取\u刷新\u重写\u规则可能不是必需的。我去看看。一些测试表明,添加重写规则就是这样做的。如果我没有忘记的话,我会做更多的测试并写到这里。

更新在几天多的时间后,我发现regex buddy是真的。以下筛选器不工作

add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
    $newrules = array(
        '(get/(.*)?)' => 'index.php?get=$matches[1]',
    );
    return $newrules + $rules;
}
add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
    $newrules = array(
        '(get/(.*)?)' => 'index.php?get=$matches[1]',
    );
    return $newrules + $rules;
}
你应该用这个来代替它

function create_rewrite_rule() {
    add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
function create_rewrite_rule() {
    add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
您的代码应该是这样的

function create_rewrite_rule() {
    add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);

function get_rewrite_rules(){
    // return get_option('rewrite_rules');
    global $wp_rewrite; 
    return $wp_rewrite->rewrite_rules();
}

add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
    $vars[] = 'get';
    $vars[] = 'for';
    return $vars;
}

function get_flush_rewrite_rules() {
    $rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
    if (!isset($rules['--(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
        flush_rewrite_rules();
    }
}
add_filter('init', 'get_flush_rewrite_rules');
function create_rewrite_rule() {
    add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);

function get_rewrite_rules(){
    // return get_option('rewrite_rules');
    global $wp_rewrite; 
    return $wp_rewrite->rewrite_rules();
}

add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
    $vars[] = 'get';
    $vars[] = 'for';
    return $vars;
}

function get_flush_rewrite_rules() {
    $rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
    if (!isset($rules['--(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
        flush_rewrite_rules();
    }
}
add_filter('init', 'get_flush_rewrite_rules');
希望帮助一些人


注意:获取\u刷新\u重写\u规则可能不是必需的。我去看看。一些测试表明,添加重写规则就是这样做的。如果我没有忘记的话,我会做更多的测试并写到这里。

我假设akasia是你的wordpress目录。然后看起来正则表达式一开始就需要“get/”。如果我是对的,你可以用。*@AlexanderTaubenkorb akasia是我的wp目录,这是真的。但正则表达式不起作用。