This should work for most cases: function strip_key($key, $string) { $string = preg_replace("/(&|\?)($key=(\w+)?)(&?)/", '$1', $string); return preg_replace('/(\?|&)$/', '', $string); }
print strip_key("list", "yadda?bo=ra&list=XXX&two=three"); print strip_key("list", "yadda?bo=ra&list=&two=three"); print strip_key("list", "yadda?list=XXX"); print strip_key("list", "yadda?list=XXX&two=three"); print strip_key("list", "yadda?no=where&list=XXX"); --- Scott Hurring Systems Programmer EAC Corporation [EMAIL PROTECTED] Voice: 201-462-2149 Fax: 201-288-1515 > -----Original Message----- > From: Scott Reismanis [mailto:[EMAIL PROTECTED]] > Sent: Monday, May 27, 2002 10:00 PM > To: [EMAIL PROTECTED] > Subject: [PHP] Regex Assistance > > > Hey All, > > I am just begining to learn regex functions in PHP. Anyhow I > am trying > to code a preg_replace function which basically cleans a URL. > > What I mean is say a url is index.php?page=hello&list=10&start=4 you > pass that URL and say 'list' to the function (shown below) Anyhow I > want that to then return index.php?page=hello&start=4 (see how the > entire list reference is now gone) > > Here is what I have come up with so far, though I am yet to > test it as > I am coding this at work :) > > function stripUrl($url, $url_strip) > { > // Check that $url_strip is in the URL > if(strpos($url,'?') && strpos($url, $url_strip.'=')) > { > // Lets clean up the url > $url = preg_replace("/\?|&$url_strip=/", "", $url); > } > return $url; > } > > My problem is that, how do I make the preg_replace stop when it > encounters a & in the URL? If anyone could shed some light on this it > would be appreciated, > > - Regards, Scott > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php