2012-07-03 84 views
0

我需要替換鏈接index.php?a=2,但是如果它的&a=2後面則不要替換它。 index.php?a=2 <- replace index.php?a=2&b=3 <- don't replace 如果在index.php後面存在鏈接,請不要替換鏈接?a = 2

使用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不。

回答

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 

測試代碼here

+0

爲什麼這會降低投票率? – nickb

+0

@nickb - 有些競爭對手會這麼做: -/ –

0
'/index\.php\?a=[^&]+(?!&)/' 
+0

試想像這樣的輸入:'You & Me'。 –

0
'/index\.php\?a=\d+(?!\s*&)/' 
+0

如何在有效的網址中使用空格字符? –