我想更改网址中的数字,这个数字是页码,但我想将所有其他参数保留在同一个网址中。
我的例子是:
/index.php?page=wallrank-top10-2&requete=keyword&searchkeyword=pvp
我的目标是:
/index.php?page=wallrank-top10-1&requete=keyword&searchkeyword=pvp
和
/index.php?page=wallrank-top10-3&requete=keyword&searchkeyword=pvp
那我怎么能用php做呢?
<?php
urlprec = currenturl -1;
urlnext = currenturl +1;
?>
我希望只能更改&#34; -1&#34; by&#34; -2&#34;
我怎么能用PHP做到这一点? 也许用一些正则表达式或其他简单的方法?
由于
答案 0 :(得分:0)
我不知道php。我只能告诉你你能做些什么。
使用此正则表达式:
(?!.*-)\d+
并通过递增来替换匹配。
答案 1 :(得分:0)
$currenturl = '/index.php?page=wallrank-top10-2&requete=keyword&searchkeyword=pvp';
$_GET['page'] = 'wallrank-top10-2';
$currpage = explode('-', $_GET['page']);
print_r($currpage);
$urlprec = str_replace($_GET['page'],
implode('-', array_merge(array_slice($currpage, 0, -1),
array(end($currpage)-1))),
$currenturl);
$urlnext = str_replace($_GET['page'],
implode('-', array_merge(array_slice($currpage, 0, -1),
array(end($currpage)+1))),
$currenturl);
print $urlprec."\n";
print $urlnext."\n";
# or using regex
$urlprec = preg_replace_callback(
'/page=([^&]+)-(\d)&/',
function($matches) {
return 'page='.$matches[1].'-'.($matches[2]-1).'&';
},
$currenturl);
$urlnext = preg_replace_callback(
'/page=([^&]+)-(\d)&/',
function($matches) {
return 'page='.$matches[1].'-'.($matches[2]+1).'&';
},
$currenturl);
print $urlprec."\n";
print $urlnext."\n";
这将按照您的要求执行,但不会考虑第一页和最后一页的案例。
答案 2 :(得分:0)
有人在这里回答,但答案被删除了......
答案是正确的,所以这里是解决方案=&gt;
<?
$url = $_SERVER['REQUEST_URI'];
function pmUrl($url, $op="+", $val=1)
{
$pattern = '/[=&][^=&]+-\K\d+(?=&|$)/';
return preg_replace_callback(
$pattern,
function ($m) use ($op, $val) {
$ret = $op=="+" ? $m[0]+$val : $m[0]-$val;
return $ret>0 ? $ret : 0;
},
$url
);
}
?>
使用这个php函数,我只需要使用=&gt;
<?php echo (pmUrl($url, "-", 1)); ?>
生成网址(在我的情况下为/index.php?page=wallrank-top10-1&requete=keyword&searchkeyword=pvp)
和
要生成下一个网址(在我的情况下为/index.php?page=wallrank-top10-3&requete=keyword&searchkeyword=pvp)