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

Php 我如何在URL中找到特定的单词并更改或删除它?,php,regex,url,preg-replace,preg-match,Php,Regex,Url,Preg Replace,Preg Match,喜欢这个网址 /?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更改它,但我如何为它编写正则表达式?您可以使用$GET来实现您想要的

喜欢这个网址

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

您可以使用$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。

如果要从一个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]
如果您想访问传入
$\u服务器['REQUEST\u URI']
的变量,请使用$\u GET variable

<?
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
?>

试试这个

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

$url = str_replace('pr_id','pr',$_SERVER['REQUEST_URI']);
echo $url;

只有正则表达式,只有硬核

$url = preg_replace('%(&|\?)pr=.?(&|$)%', '$1', $url);
$url = preg_replace('%(&|\?)pr_id=%', '$1pr=', $url);
$url = trim($url, '&');

你想重定向吗?或者出于其他原因编辑字符串?apache mod_重写会是一种选择吗?(Web服务器中的URL操作)为什么要使用regex?您可以通过简单的搜索和替换来实现这一点。如果您是从
$\u服务器[“REQUEST\u URI”]
获取此信息,那么我认为这些参数也可以从
$\u GET
获取。。。