喜欢这个网址;
/?action=proc&pr_id=5
我想找到“pr_id”并将其更改为“pr”=> ?/动作= PROC&安培; PR = 5;
但如果URL是这样的话;
/?action=proc&pr_id=5&pr=5
我想再次找到“pr_id”并将其删除=> ?/动作= PROC&安培; PR = 5
我得到了网址
$url = $_SERVER['REQUEST_URI'];
并希望使用preg_match更改它但是如何为此编写正则表达式?
答案 0 :(得分: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。
答案 1 :(得分: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
?>
答案 2 :(得分:0)
只有正则表达式,只有铁杆!
$url = preg_replace('%(&|\?)pr=.?(&|$)%', '$1', $url);
$url = preg_replace('%(&|\?)pr_id=%', '$1pr=', $url);
$url = trim($url, '&');
答案 3 :(得分:-1)
试试这个。
您正在使用str_replace()函数替换字符串,如:
$url = str_replace('pr_id','pr',$_SERVER['REQUEST_URI']);
echo $url;