Well, I think I found the solution.  I changed the regex a bit, and added a
condition.  This should work, but if anyone has a better idea please let me
know.


function replace_get_var_value($string, $var, $new_value){
         // substitute value
        $buffer = eregi_replace("([?|&]{1})$var=([a-z0-9\+]+)",
"\\1$var=$new_value", $string);
         // value not found then add it to the REQUEST_URI
        if($buffer==$string){
                if(strchr("?", $buffer)){
                        $buffer = $buffer."&$var=$new_value";
                }else{
                        $buffer = $buffer."?$var=$new_value";
                }
        }
        return $buffer;
}

echo replace_get_var_value($REQUEST_URI, "test", "value2");

Thanks!
Robert Zwink
http://www.zwink.net

-----Original Message-----
From: Robert V. Zwink [mailto:[EMAIL PROTECTED]]
Sent: Friday, November 02, 2001 9:15 AM
To: [EMAIL PROTECTED]
Subject: [PHP] regular experssion help


I hope someone has time to help with a regular expression?

I need a regex that will replace get variables, regardless of there location
in a URL, and if the get var does not exist I hope that it will create the
get var in the URL.  Some examples


$REQUEST_URI can look like this "value1":

filename.phtml?test=value1
filename.phtml?another=value&test=value1
filename.phtml
filename.phtml?another=value

The variable $test will either exist preceded by "?" "&" or not at all.

I would like to take a value pair, put it into a function with $REQUEST_URI
and the have a new $REQUEST_URI returned with either the value replaced or
added.

Replacing/adding "value2"

filename.phtml?test=value2
filename.phtml?another=value&test=value2
filename.phtml?test=value2
filename.phtml?another=value&test=value2

The variable located by matching ?test &test or adding it if it does not
exist, with a "?" or a "&"

I currently have a function:

replace_get_var_value($string, $var, $new_value){
        return eregi_replace("&$var=([a-z0-9\+]+)", "&$var=$new_value", $string);
}

But it won't work if the value does not exist, or if the value is the first
variable in the set within $REQUEST_URI.

Example ($REQUEST_URI that will not work with this function)
filename.phml?another=value
filename.phml?var=old_value
filename.phml

The only $REQUEST_URI that this will work with is
filename.phtml?another=value&var=old_value

I hope my description makes sense.  Thanks for any help!

-Rob Z.
http://www.zwink.net


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to