gesendete Variablen wieder an Link anhängen
Autor: Ralf v.d.Mark
eingetragen: Donnerstag, 12. Juli 2007 um 09:00 Uhr (28/2007 Kalenderwoche)
geändert: Mittwoch, 15. November 2023 um 08:42 Uhr (46/2023 Kalenderwoche)
Keywords: Variablen POST GET Url link anhängen parsen url2array querystring
Kategorien: PHP,
Text:
Mit diesem Code-Schnipsel kann man per Post oder Get gesendete Variablen wieder an einen Link anhängen.
Wird z. B. gebraucht um die Such- oder Sortier-Kriterien auf einen Link zur nächsten Seite zu übergeben.
Die Zweite Funktion bringt einen QueryString als Array zurueck.
Viel Erfolg damit,
Ralf
Quellcode:
/**
* @author Ralf von der Mark <rafl@website-vdm.de>
* @copyright Copyright (c) 2007, website-vdm.de, Ralf von der Mark
* @version vom 12.07.2007 um 14:56:02 Uhr
*
* @name variablen_rausfischen()
* @abstract Diese Funktion regelt das gesendete Variablen wieder an Link anhaengen
*
* @param string $ausnahmen (Bsp.: 'var01','var02', usw.)
* //Die hier genannten Get-/Post-Felder werden ignoriert also nicht gesammelt.
* @example $anhang = variablen_rausfischen('var01,var02');
* @return string (Bsp: 'auf=DESC&summe=187amp;ab=ASC' ohne 'var01=a&var02=s')
*/
function variablen_rausfischen($ausnahmen = 'DUMMY')
{
//die Variablen-Keys aus '$ausnahmen' sollen nicht gesammelt werden!
//Die Liste sollte Kommagetrennt (,) sein, aber wenn nicht,
// werden hier einige Bereinigungen durchgefuehrt:
$ausnahmen = strtolower($ausnahmen);//in Kleinbuchstaben umsetzen
$ausnahmen = str_replace(' ', ',', $ausnahmen);//Leer (Space)
$ausnahmen = str_replace(';', ',', $ausnahmen);//Semikolon
$ausnahmen = str_replace(',,', ',', $ausnahmen);//doppelte Kommas
$ausnahmen = str_replace(',,', ',', $ausnahmen);//zur Sicherheit noch mal
$arr_ausnahmen = explode(',', $ausnahmen);//jetzt ins Array pruegeln
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$arr_linkanhang = array();//Array definieren
if (!empty($_GET)) {
//echo 'hier kommt GET!';
foreach ($_GET as $get_key => $get_variable) {
$get_key2 = strtolower($get_key);//Kleinbuchstaben
if (!in_array($get_key2, $arr_ausnahmen)) {
//Wenn nicht in Ausnahmen-Array, dann...
$get_variable = trim($get_variable);
if (!empty($get_variable)) {
//Wenn Sie nicht leer ist, dann ...
$arr_linkanhang[$get_key] = $get_variable;
}//ENDE: if(!empty($get_variable))
}//ENDE: if (!in_array($get_key, $arr_ausnahmen))
}//ENDE: foreach ($_POST as $get_key => $get_variable)
}//ENDE: if(!empty($_GET))
if (!empty($_POST)) {
//echo 'hier kommt POST!';
foreach ($_POST as $post_key => $post_variable) {
$post_key2 = strtolower($post_key);//Kleinbuchstaben
if (!in_array($post_key2, $arr_ausnahmen)) {
$post_variable = trim($post_variable);
if (!empty($post_variable)) {
//Wenn Sie nicht leer ist, dann ...
if (!key_exists($post_key, $arr_linkanhang)) {
//nur wenn die Variable nicht schon als GET gesetzt wurde, dann...
$arr_linkanhang[$post_key] = $post_variable;
}//ENDE: if (!key_exists($get_key, $arr_linkanhang))
}//ENDE: if(!empty($post_key))
}//ENDE: if (!in_array($post_key, $arr_ausnahmen))
}//ENDE: foreach ($_POST as $post_key => $post_variable)
}//ENDE: if(!empty($_POST))
$linkanhang = '';//Variable zum Sammeln definieren
if (!empty($arr_linkanhang)) {
foreach ($arr_linkanhang as $keychen => $wertchen) {
$linkanhang .= '&'.$keychen.'='.$wertchen;
}//ENDE: foreach ($arr_linkanhang as $keychen => $wertchen)
$linkanhang = substr($linkanhang, 5);//erste "&" abschneiden!
//echo '<br />'.$linkanhang;
return $linkanhang;//String uebergeben und fertig!
}//ENDE: if(!empty($arr_linkanhang))
}//ENDE: function variablen_rausfischen(...)
$url_anhang = variablen_rausfischen('var01,var02');
/* ############################################
* ## 2. Umgekehrte Vorgehensweise: ###########
* ########################################## */
/**
* Holt aus einem URL-GET-String die Inhalte raus
* und gibt sie als Array zurueck oder (ueber)schreibt
* sie sofort in das Uebergeben Array
*
* @author Ralf von der Mark <rafl@vondy.de>
* @copyright Copyright (c) 2014, vondy.de, Ralf von der Mark
* @version vom 28.08.2014
*
* @name parseUrlstringToArray()
* @abstract Diese Funktion holt aus einem URL-GET-String die Inhalte raus
* und gibt sie als Array zurueck
*
* @param string $urlString (z Bsp: param1=1¶m2=2&...)
*
* @return array (kann ins GET-Array uebertragen werden)
*
* @example $_GET = parseUrlstringToArray('param1=1¶m2=2', $_GET);
*/
function parseUrlstringToArray($urlString, &$arrayName = 'kannMussAberNicht')
{
$urlString = trim($urlString);
if (!empty($urlString)) {
$array4return = array();
if (empty($arrayName) || !is_array($arrayName)) {
//Wenn Variabel die per Referenz kommt keine Array ist...
$arrayName = array();//Array draus machen ;-)
}//ENDE: if ()
$urlParamGet = explode('&', $urlString);
foreach ($urlParamGet as $urlKey => $urlWert) {
if (!empty($urlWert) && $erstesGleich = strpos($urlWert, '=')) {
//Wenn KeyName gefuellt und ein Gleichzeichen gibt, dann...
$getKey = trim(substr($urlWert, 0, $erstesGleich));
$getWert = trim(substr($urlWert, ($erstesGleich + 1)));
if (!empty($getWert)) {
//Wenn nach dem Gleichzeichen Wert folgt, dann ins Array...
$arrayName[$getKey] = $getWert;
$array4return[$getKey] = $getWert;
}//ENDE: if (!empty($getWert)
}//ENDE: if (!empty($urlWert) && $erstesGleich = strpos($...
}//ENDE: foreach ($urlParamGet as $urlKey => $urlWert)
return $array4return;
}//ENDE: if (!empty($urlString))
return false;
}//ENDE: function parseUrlstringToArray(...)