-1

この URL のように;

/?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を取得します

$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 モジュールを使用できます。

Apachehttpd.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 に答える