Problem mit preg_replace syntax

B

BKBB

Hallo,
um mit mod_rewrite meine urls umgestallten zu können, ohne dabei das ganze cms umzubasteln, möchte ich am Ende alle URLs in "meine" Form bringen:

von index.php?lang=de&rid=01&pid=02
zu page_de_01_02.html

das klappt auch ganz gut:
PHP:
$layout = preg_replace('/href="index.php\?lang=(.+?)\&rid=(.+?)\&pid=(.+?)"/', 'href="page_$1_$2_$3.html"', $layout);
doch gibt es auch Links, die nicht relativ angegeben sind, aber auch kein Problem, suche ich halt ein 2. Mal:
PHP:
$layout = preg_replace('/href="http:\/\/localhost\/apm\/index.php\?lang=(.+?)\&rid=(.+?)\&pid=(.+?)"/', 'href="page_$1_$2_$3.html"', $layout);

Dummerweise gibt es aber auch URLs, die nach dem "pid" noch mehr Attribute enthalten. Ich kann ja nun schlecht an mein Suchpattern ein "(.+?)" anhängen, das hat leider im Falle der absoluten Links auch nicht geklappt.

Deswegen meine Frage, wie man die erste Suche so ausbauen kann, dass sie
- auf beide Linkformen reagiert (am besten ohne den Server hardcoded angeben zu müssen)
- und bei mehr Attributen diese an das ".html" in der für urls üblichen Form "&xy=z&..." anhängt.
Vielen Dank für Eure Hilfe,
LG,
Markus
 
Zurück