Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
带有WordPress Rewrite_规则和Rewrite_标记PHP函数的正则表达式问题_Php_Regex_Wordpress_Rewrite - Fatal编程技术网

带有WordPress Rewrite_规则和Rewrite_标记PHP函数的正则表达式问题

带有WordPress Rewrite_规则和Rewrite_标记PHP函数的正则表达式问题,php,regex,wordpress,rewrite,Php,Regex,Wordpress,Rewrite,我不是一个伟大的正则表达式头脑,但我觉得这是我的代码在这里的问题,不知道是否有人可以借给更好的眼睛 代码是这一点的PHP function add_results_rewrite_tags() { add_rewrite_tag('%resultant%','([^0-9]+$)'); } add_action( 'init', 'add_results_rewrite_tags' ); function add_results_rewrite_rules() { add_rewrite_ru

我不是一个伟大的正则表达式头脑,但我觉得这是我的代码在这里的问题,不知道是否有人可以借给更好的眼睛

代码是这一点的PHP

function add_results_rewrite_tags() {
add_rewrite_tag('%resultant%','([^0-9]+$)');
}
add_action( 'init', 'add_results_rewrite_tags' );

function add_results_rewrite_rules() {
add_rewrite_rule('^([^&]+)/your-result/([^0-9]+$)/?$','index.php?    
name=$matches[1]&resultant=$matches[2]','top');
}
add_action( 'init', 'add_results_rewrite_rules' );
我期望发生的是,类似的URL将导致404 not found错误,而格式化为的URL将返回已找到的页面

然而,我实际上得到了相反的结果。。。以/5/(或其他文本)结尾的URL将显示“hit”,而像/5/这样的数字结尾将显示404

在我看来,我一定是把正则表达式模式弄错了,但我不明白为什么我会如此错误。我也可能在某种程度上错误地使用了这些wordpress函数,但我觉得我已经很好地解决了这一部分…很明显,当一些URL中包含/your result/时,我没有得到404,这正是这些函数的本意。现在我只想确保只有“resultant”的数值才会产生命中


有什么想法吗?谢谢

我认为您的正则表达式的第一部分与post url不匹配。我假设第一个匹配是字母数字。此外,这是一个Apache重写规则,因此不会有$matches变量,只有一个regex占位符

function add_results_rewrite_rules() {
    add_rewrite_rule(
        '^([A-za-z\-]+)/your-result/([0-9]+$)/?$',
        'index.php?name=$1&resultant=$2',
        'top'
    );
}

谢谢奥斯卡·M。!我会注意到,实际上我不得不将这两个变量更改回
$matches[1]
$matches[2]
,以使其工作,但现在它似乎与我预期的匹配。但是非常感谢,现在好多了。有趣的是,我假设WordPress只是把结果写到了.htacess上,但看起来它在幕后提供了$matches数组。