stops double encoding of &. & became &
[squirrelmail.git] / functions / html.php
index 217ecfe022aba86e83bd01ef54f822a6fb8d27e6..004565ba711af6153a0ae27b204aa9d18305dfe2 100644 (file)
@@ -109,7 +109,7 @@ function set_url_var($url, $var, $val=0, $link=true) {
                     '/.+(\\?'.$var.')=(.*)$/AU',     /* at front and only var */
                     '/.+(\\&'.$var.')=(.*)$/AU'      /* at the end */
                     );
-    $url = preg_replace('/&/','&',$url);
+    $url = str_replace('&','&',$url);
 
     // FIXME: why switch is used instead of if () or one preg_match()
     switch (true) {
@@ -143,9 +143,6 @@ function set_url_var($url, $var, $val=0, $link=true) {
     if ($k) {
         if ($val) {
             $rpl = "$k=$val";
-            if ($link) {
-                $rpl = preg_replace('/&/','&',$rpl);
-            }
         } else {
             $rpl = '';
         }
@@ -155,6 +152,8 @@ function set_url_var($url, $var, $val=0, $link=true) {
         $pat = "/$k=$v/";
         $url = preg_replace($pat,$rpl,$url);
     }
-    $url = preg_replace('/&/','&',$url);
+    if ($link) {
+        $url = str_replace('&','&',$url);
+    }
     return $url;
 }