-1

喜欢这个网址;

/?action=proc&pr_id=5

我想找到“pr_id”并将其更改为“pr”=> /?action=proc&pr=5;

但是如果 URL 是这样的;

/?action=proc&pr_id=5&pr=5

我想再次找到“pr_id”并将其删除=> /?action=proc&pr=5

我得到网址

$url = $_SERVER['REQUEST_URI']; 

并想用 preg_match 更改它,但是我该如何为此编写正则表达式?

4

4 回答 4

3

您可以使用 $_GET 来实现您想要的。

$get_values = $_GET;

if (isset($get_values['pr_id'])) {
    if (!isset($get_values['pr']) {
        $get_values['pr'] = $get_values['pr_id'];
    } 
    unset($get_values['pr_id']);
}

然后重构 URI。

于 2012-12-04T08:04:42.900 回答
0

如果您想从一个 URL 重定向到另一个 URL,您可以使用 Apache mod_rewrite 模块。

转到您的 Apache 配置文件httpd.conf,确保已加载模块

LoadModule rewrite_module modules/mod_rewrite.so

然后在您的虚拟主机或 .htaccess (如果它打开)中添加下一行:

RewriteEngine On
RewriteRule ^/?action=([a-z]+)&pr_id=([0-9]+)$ /?action$1&pr=$2 [L]

如果您想访问传入的变量$_SERVER['REQUEST_URI'],请使用 $_GET 变量。

<?
print_r($_GET); // prints the array of all variables coming in GET request
print $_GET['action']; // prints your action variable
print $_GET['pr_id']; // prints your pr_id variable
?>
于 2012-12-04T08:13:26.443 回答
0

只有正则表达式,只有铁杆!

$url = preg_replace('%(&|\?)pr=.?(&|$)%', '$1', $url);
$url = preg_replace('%(&|\?)pr_id=%', '$1pr=', $url);
$url = trim($url, '&');
于 2012-12-04T08:26:31.040 回答
-1

试试这个。

您正在使用 str_replace() 函数来替换字符串,例如:

$url = str_replace('pr_id','pr',$_SERVER['REQUEST_URI']);
echo $url;
于 2012-12-04T08:15:23.080 回答