• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

einfache Funktion

Status
Für weitere Antworten geschlossen.

philipp

Neues Mitglied
Ich will ne kleine Funktion machen, die so aufgebaut is:

function (uri,del,add) {

}

uri is die uri
del is ne var oder ein array mit dem beispielwert 'von'
add is ne var oder ein array mit dem beispielwert 'von=2'

es sollen alle $_GETs die dem del Wert enstprechen aus der uri entfernt werden(samt & || ? davor) und alle adds dem wert uri hinzugefügt werden, das erste aber (falls uri jetzt nackt) mit einem ? davor, die anderen mit einem & davor....

ich hab natürlich wieder mal probleme mit der regexp

zb das:

PHP:
<?php
   if (preg_match("\[\?&]$value\",$newuri)) preg_replace("\[\?&]$value(=?)*(^&?)\","",$newuri); 
?>

und das "=" muss nicht gesetzt sein, kann theoretisch leer sein. also index.php?do=1&beispiel
 
Werbung:
so sieht das script derweil aus:

PHP:
<?php
/*
* uri => Give URI to urinator # example: $_SERVER['REQUEST_URI']
* del => Var || Array [ $_GET to delete] # example: 'von'
* add => var || Array [ $_GET to add] # example: 'von=1'
*/

function mp_urinator($uri,$del,$add) {
 
 
 //Delete $dels # EXAMPLE = index.php?mplink=2&comments=1&von=3
 if (is_array($del)) {
  foreach ($del AS $value) {
   if (preg_match("[\?&]$value",$uri)) preg_replace("[?&]$value(=?)*(^&?)","",$uri); 
  }
 } else {
  if (preg_match("[\?&]$del",$uri)) preg_replace("[?&]$del(=?)*(^&?)","",$uri);
 }
 
 
 //Add $adds
 if (is_array($add)) {
  foreach ($add AS $value) {
   if (ereg("\?",$uri)) $uri .= '&'.$value; else $uri .= '?'.$value;
  }
 } else {
  if (ereg("\?",$uri)) $uri .= '&'.$add; else $uri .= '?'.$add;
 }
 RETURN $uri; 
}
?>

und der erste teil (löschen) geht ned recht....

Code:
Unknown modifier 'p' in C:\Programme\xampp\htdocs\cemes\cemes0.1\mp_urinator.php on line 17
 
Werbung:
habs jetzt so gelöst, wenns wen interessiert
PHP:
<?php
/*
* uri => Give URI to urinator # example: $_SERVER['REQUEST_URI']
* del => Var || Array [ $_GET to delete] # example: 'von'
* add => var || Array [ $_GET to add] # example: 'von=1'
*/

function mp_urinator($uri,$del,$add) {
 
 $parts = explode('?',$uri);
 $newuri = $parts[0];
 $query = explode('&',$uri);
 //del dels
 if (!is_array($del)) $del = array(0=>$del);
 foreach ($query AS $key => $value) {
  foreach ($del AS $value2) {
   if (ereg($value2,$value)) unset($query[$key]);
  }
 }
 //add adds
 if (!is_array($add)) $add = array(0=>$add);
 foreach ($add AS $value) {
  $query[] = $value;
 }
 //Build URI
 foreach($query AS $value) {
  if (!ereg('\?',$newuri)) {
   $newuri .= '?'.$value;
  } else {
   $newuri .= '&'.$value;
  }
 }
 RETURN $newuri;
}
?>

die funktion nimmt eine uri, ein array(oder eine var) mit den $_GET zum löschen entgegen und ein array(oder eine var) mit $_GET zum hinzufügen(wert muss ebenfalls übergeben werden)

edit: so, kleiner fehler war drinnen, das geht aber:

PHP:
<?php
/*
* uri => Give URI to urinator # example: $_SERVER['REQUEST_URI']
* del => Var || Array [ $_GET to delete] # example: 'von'
* add => var || Array [ $_GET to add] # example: 'von=1'
*/

function mp_urinator($uri,$del,$add) {
 if (ereg('\?',$uri)) {
  $parts = explode('?',$uri);
  $newuri = $parts[0];
  $query = explode('&',$parts[1]);
  //del dels
  if (!is_array($del)) $del = array(0=>$del);
  foreach ($query AS $key => $value) {
   foreach ($del AS $value2) {
    if (ereg($value2,$value)) unset($query[$key]);
   }
  }
 } else {
  $newuri = $uri;
  $query = array();
 }
 //add adds
 if (!is_array($add)) $add = array(0=>$add);
 foreach ($add AS $value) {
  $query[] = $value;
 }
 //Build URI
 foreach($query AS $value) {
  if (!ereg('\?',$newuri)) {
   $newuri .= '?'.$value;
  } else {
   $newuri .= '&'.$value;
  }
 }
 RETURN $newuri;
}
?>
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben