$test="text&site=234&text2=www&site=567&site=54332&text";
$test = preg_replace("!&site=(.*?)&!","&",$test);
Weil das &site=567& findet und dann site=54332& nicht mehr macht - vermute ich.
Na, dann aber 3 Fragen hierzu:
Die Regex hat ja sowohl &site=234& gefunden und ersetzt, als auch &site=567&.
- Warum dann nur das letzte nicht?
- Wo ist die Logik dahinter?
- Wie gestalte ich den Ausdruck entsprechend gieriger?
Grüße, Stefan