0

リンクを交換する必要がありますindex.php?a=2が、それ&以降にあるa=2場合は交換しないでください。 index.php?a=2 <- replace index.php?a=2&b=3 <- don't replace

を使用してPHPpreg_replace()

私はこれを使ってみました:

preg_replace('^index\.php\?a=([0-9]+)(?!amp;)^', 'home', 'index.php?a=2');
preg_replace('^index\.php\?a=([0-9]+)(?!amp;)^', 'home', 'index.php?a=2&b=3');
preg_replace('^index\.php\?a=([0-9]+)(?!&)^', 'home', 'index.php?a=2');
preg_replace('^index\.php\?a=([0-9]+)(?!&)^', 'home', 'index.php?a=2&b=3');

私が使用しているもの:

preg_replace('^(\/*)index\.php\?a=([0-9]+)(?!&)^e', "a($2)", 'index.php?a=2');

function a($id) {
  // Getting name from mysql...
  return '/a$id_$name';
}

これで動作しています:index.php?a=2&b0、しかしそうでindex.php?a=10&b=0はありません。

4

3 に答える 3

1

PHPスクリプト:

<?php
print preg_replace('/index\.php\?a=[0-9]+(?!&)/', 'home', 'index.php?a=2');
print "\n";
print preg_replace('/index\.php\?a=[0-9]+(?!&)/', 'home', 'index.php?a=2&b=3'); 
?>

出力:

home
index.php?a=2&b=3

ここでコードをテストします。

于 2012-07-03T12:13:07.830 に答える
0
'/index\.php\?a=[^&]+(?!&)/'
于 2012-07-03T12:08:16.673 に答える
0
'/index\.php\?a=\d+(?!\s*&)/'
于 2012-07-03T12:49:55.803 に答える