如何在URL中找到特定单词并更改或删除它?

时间:2012-12-04 07:53:11

标签: php regex url preg-replace preg-match

喜欢这个网址;

/?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更改它但是如何为此编写正则表达式?

4 个答案:

答案 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;