2009-08-11 11 views
1

J'ai besoin de « yomomedia.com » si le HTTP_HOST est [TOUT] .yomomedia.com, sauf dans les cas où il est « dev.yomomedia.com » sinon il devrait retourner dev.yomomedia.comExpression régulière négative remplacer?

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

Juste essayé ce qui suit sans succès:

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

Répondre

4

Un groupe passif négatif (préanalyse) devrait faire:

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

Maintenant, il faut vraiment travailler. Il aurait dû y avoir. * Après le lookahead. Je l'ai ajouté maintenant –

+0

merci, Ignas, je dois encore entrer dans le royaume de lookahead et lookbehind quand il s'agit de regex – farinspace

2

Look-arounds ne « consomment » tout omble chevalier acters. Donc, votre expression signifie la même chose que les trois premiers caractères ne sont pas dev (^(?!dev)) et le premier caractère est un arrêt complet (^\.).

Donc, essayez ce soit:

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

Ou:

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