$uri = preg_replace("(&lang=en)|(/?lang=en)","",$uri);
Jetzt meckert der Parser herum "Unknown modifier '|'" . Wie (mit welcher Taste) schreibt man denn diesen oder-Strich?
Ich möchte glatt behaupten, dass er nicht über den senkrechten Strich meckert, sondern darüber, dass du
- das Fragezeichen mit einem Schräg- statt einem Rückstrich maskiert hast
- dein Muster nicht in begrenzende Zeichen verpackt hast (üblicherweise Schrägstriche, es geht aber auch jedes andere Zeichen)
Probiere doch mal (alles hier nicht notwendige, einschließlich der doppelten Anführungzeichen habe ich weggelassen):
/(&lang=en)|(?lang=en)/
Kürzer sollte sich deine Aufgabe übrigens so erledigen lassen:
/(&|?)lang=en/
Und da du eine ganze URI zu prüfen scheinst, müsste etwas in dieser Art exakter sein:
/?(.+&|)lang=en(&.+|)$/