2009-08-11 144 views
1

我需要得到「yomomedia.com」如果HTTP_HOST是[ANY] .yomomedia.com除了在它的情況下「dev.yomomedia.com」否則,它應該返回dev.yomomedia.com正則表達式負號替換?

echo preg_replace("/^([EVERYTHING-OTHER-THAN-DEV])\./Ui","",$_SERVER['SERVER_NAME']) 

剛試過沒有成功如下:

echo preg_replace("/^(?!dev)\./Ui",'','www.yomomedia.com'); // returns www.yomomedia.com 
echo preg_replace("/^(?!dev)\./Ui",'','dev.yomomedia.com'); // returns dev.yomomedia.com 

回答

4

負被動組(前瞻)應該做的:

/^(?!dev).*\./Ui 
+0

現在應該真正發揮作用。在前瞻之後應該有*。我現在添加了 – 2009-08-11 18:53:42

+0

謝謝,Ignas,當涉及到正則表達式時,我還沒有進入前瞻和逆序的領域 – farinspace 2009-08-11 18:56:51

2

​​沒有「消費」的任何字符acters。所以你的表達方式與相同,前三個字符不是dev^(?!dev))AND 第一個字符是句號^\.)。

因此,嘗試這兩種:

/^(?!dev\.)[^.]+\./Ui 

或者:

/^[^.]+\.(?<!^dev\.)/Ui