URL Auslesen und verändern

Hallo,

Ich hab mal wieder ein kleinen problem,
und zwar suche ich nach einer möglichkeit die gesammte URL auszulesen und dann ggf. nach bedarf passend zu den Functionen auf der seite zu verändern.

z.B. wenn die URL „index.php?a=1&b=2“ ist und für eine Function wird jetzt noch „c=3“ benötigt, such ich etwas das die URL so wie sie ist kopier und „c=3“ anhängt. Bzw. wenn ich die URL „index.php?a=1&b=2“ habe und „a=2“ sein soll, eben „index.php“ und „b=2“ bleiden und nur das query a verendert wird.

Ich hoffe ich konnte es so erklären dass jetzt jeder weiss was ich suche. über Codebeispiele währe ich dankbar, dar ich nich mal im ansatz eine Idee hab wie ich das mache.

lg. und danke,
Meganova

// an query & anhängen für replace
$paramteredaten=$_SERVER[´QUERY_STRING´]."&";
// parameter ersetzen
$paramterreplace = preg_replace("/a=[^&]/",„a=0“,$paramteredate);
// zusatzzeichen wieder löschen
$paramteredaten = preg_replace("/&$/","",$paramterreplace);
// url bauen
$url = ´http://´+$_SERVER[´HTTP_HOST´] . $_SERVER[´PHP_SELF´] . ´?´ . $paramteredaten

klar ist das es hierbei den paramter geben muss , wenn keiner da ist muss man ihn hinten ran hängt

Hi,

Danke für deine Hilfe,
is ja doch so einfach :smile: !!!
ich werde mir das ganze gleich mal in ruhe ansehen.

lg. Magenova

Hi,

Danke für deine Hilfe,
is ja doch so einfach :smile: !!!

naja ich hab nochmal die fehler rausgenommen und den rest versucht zu beachten der noch mit dem syntax von preg_replace geht

// an query & anhängen für replace
$paramdaten=$\_SERVER[´QUERY\_STRING´]."&";
// parameter ersetzen
// ist ersetzt
$isreplace ="a=0";
// wird ersetzt
$willreplace = "a=";
// expression for replace
$willreplaceexp = '/'.$willreplace.'.\*[^&]/';
//// counter für gefunden setzen
$foundit = 0;
// ersetzung
$paramreplace = preg\_replace($willreplaceexp,$isreplace,$paramdaten,-1,$foundit);
// zusatz zeichen wieder löschen
$paramdaten = preg\_replace("/&$/","",$paramreplace);
// wenn keine ersetzung dann anfügen 
if ($foundit == 0) {
 // gibt es parameter
 if (preg\_match("/=/",$paramdaten)) {
 // mit param -\> mit & anhängen
 $paramdaten .= "&".$isreplace;
 } else {
 // ohne parameter -\> ohne & anhängen
 $paramdaten .= $isreplace;
 }
} 
// url bauen
$url = ´http ://´+$\_SERVER[´HTTP\_HOST´] . $\_SERVER[´PHP\_SELF´] . ´?´ . $paramdaten;

ich glaub so ist es richtig …

p.s. ungetestet

// an query & anhängen für replace
$paramdaten=$_SERVER[´QUERY_STRING´]."&";
// parameter ersetzen
// ist ersetzt
$isreplace =„a=0“;
// wird ersetzt
$willreplace = „a=“;
// expression for replace
$willreplaceexp = ‚/‘.$willreplace.’.*[^&]/’;
//// counter für gefunden setzen
$foundit = 0;
// ersetzung
$paramreplace =
preg_replace($willreplaceexp,$isreplace,$paramdaten,-1,$foundit);
// zusatz zeichen wieder löschen
$paramdaten = preg_replace("/&$/","",$paramreplace);
// wenn keine ersetzung dann anfügen
if ($foundit == 0) {
// gibt es parameter
if (preg_match("/=/",$paramdaten)) {
// mit param -> mit & anhängen
$paramdaten .= „&“.$isreplace;
} else {
// ohne parameter -> ohne & anhängen
$paramdaten .= $isreplace;
}
}
// url bauen
$url = ´http ://´+$_SERVER[´HTTP_HOST´] . $_SERVER[´PHP_SELF´]
. ´?´ . $paramdaten;

Jetzt läuft es :smile: !!!
beim ersten versuch war irgend ein fehler, da wurd zwar der Query verändert aber die Url selber auch z.B. wurde aus meineseite.de/index.php?a=1 >> meineseite.de/0/index.php?a=2 gemacht.

…aber jetzt geht’s !!!

lg. und danke für deine Hilfe,
Meganova