Hallo,
ich habe hier ein Content Management System mit standardmäßig eher unschönen URLs, die ich umschreiben möchte. Ursprünglich sehen die Adressen so aus:
Wenn ich die HTML-Ausgabe abfange und folgende Regular Expressions darauf anwende, kommt eine solche Adresse raus:
Solang id der einzige Parameter bleibt, der in der URL übergeben wird, funktioniert alles einwandfrei. Allerdings gibt es mehrere Bereiche im CMS, die noch einen oder mehrere weitere Werte in der Adresse benötigen. Da die zusätzlichen Variablen in Anzahl und Namen beliebig sein sollen, reicht es mir, wenn einfach das erste Ampersand in ein Fragezeichen umgewandelt und mit allen anderen Parametern unverändert an die neue Adresse angehängt wird, also z.B. so:
Daran verschluckt sich mein PHP-Code allerdings. Statt der obigen URL kommt Folgendes raus:
Hat jemand eine Idee, was ich ändern muss, um diesen Fehler zu beheben?
Viele Grüße
Michael
ich habe hier ein Content Management System mit standardmäßig eher unschönen URLs, die ich umschreiben möchte. Ursprünglich sehen die Adressen so aus:
Code:
http://domain.de/cms/website.php?id=/de/index.htm
Wenn ich die HTML-Ausgabe abfange und folgende Regular Expressions darauf anwende, kommt eine solche Adresse raus:
Code:
http://domain.de/de/index.htm
PHP:
$strBuffer = preg_replace('#([\"\'])website\.php\?id=(/.+)(?:&|&)(.+)(\\1)#','\\1\\2?\\3\\4',$strBuffer);
$strBuffer = preg_replace('#([\"\'])website\.php\?id=(/[^\\1]+)(\\1)#U','\\1\\2\\3',$strBuffer);
$strBuffer = preg_replace('#([\"\'])\.\.(/.+\\1)#U','\\1\\2',$strBuffer);
Code:
http://domain.de/de/search.htm?action=search&searchterm=novelle&tagsearch=1
Daran verschluckt sich mein PHP-Code allerdings. Statt der obigen URL kommt Folgendes raus:
Code:
http://domain.de/de/search.htm&action=search&searchterm=novelle?amp;tagsearch=1
Hat jemand eine Idee, was ich ändern muss, um diesen Fehler zu beheben?
Viele Grüße
Michael