Einen Teil aus einem String herausschneiden. RegExp?

visionsign

Mitglied
Hallo zusammen,

ich möchte eine Möglichkeit anbieten in einem von mir gebauten Warenkorbsystem, die URL der jeweiligen Seite per Email an einen Freund zu senden. Soweit auch kein Problem. NUR: Sind Cookies im Browser ausgeschaltet, wird ja automatisch die Session ID an die URL drangehängt. Diese MUSS natürlich weg wenn die url weitergeschickt wird. Aber WIE?

unten jetzt die möglichen Varianten die es gibt. Also Session ID mitten in der URL, am Ende der URL oder nur die Session ID.

Wie löse ich das Problem, vielleicht mit RegExp?

$sessname = 'PHPSESSID';
/* session-ID ist allerdings unbekannt! */


produkte_list.php?rub_id=10&PHPSESSID=1v3er6d4762tpu6d5mqfnne9f5

rauschneiden : &PHPSESSID=1v3er6d4762tpu6d5mqfnne9f5


produkte_list.php?PHPSESSID=1v3er6d4762tpu6d5mqfnne9f5&sub=2

rauschneiden : PHPSESSID=1v3er6d4762tpu6d5mqfnne9f5&


produkte_list.php?PHPSESSID=1v3er6d4762tpu6d5mqfnne9f5

rauschneiden : ?PHPSESSID=1v3er6d4762tpu6d5mqfnne9f5
 
Hallo,
habe dazu mal schnell eine kleine Funktion geschrieben, hoffe sie hilft dir weiter.
PHP:
<?php
    function remove_sessionID($url){ 
        if (preg_match('/(.*?)\&'.session_name().'=([a-zA-Z0-9]+)/', $url)){ 
            $url = preg_replace('/(.*?)\&'.session_name().'=([a-zA-Z0-9]+)/', '$1', $url); 
        } else if (preg_match('/(.*?)\?'.session_name().'=([a-zA-Z0-9]+)&(.*?)/', $url)){ 
            $url = preg_replace('/(.*?)\?'.session_name().'=([a-zA-Z0-9]+)&(.*?)/', '$1?$3', $url); 
        } else if (preg_match('/(.*?)\?'.session_name().'=([a-zA-Z0-9]+)/', $url)){ 
            $url = preg_replace('/(.*?)\?'.session_name().'=([a-zA-Z0-9]+)/', '$1', $url);   
        } 
        return $url; 
    } 
    echo remove_sessionID('produkte_list.php?rub_id=10&PHPSESSID=1v3er6d4762tpu6d5mqfnne9f5').'<br />'; 
    echo remove_sessionID('produkte_list.php?PHPSESSID=1v3er6d4762tpu6d5mqfnne9f5&sub=2').'<br />'; 
    echo remove_sessionID('produkte_list.php?PHPSESSID=1v3er6d4762tpu6d5mqfnne9f5'); 
?>
mfg
forsterm
 
Zuletzt bearbeitet:
Es geht auch einfacher:
PHP:
str_replace('?&', '?', preg_replace('/([?&])?'.session_name().'=[^&]+/m', '\1', $string))
 
Zurück