gesendete Variablen wieder an Link anhängen

edit | delete

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(...)