let url_change_arg (key:string) (value:string) url =
let (base,args) = url_split_args url in
let larg = Str.split (Str.regexp "&") args in
let rec update_arg l b = match l with
| [] -> if b then [] else [ key^"="^value ]
| x::c -> let sl = Str.split (Str.regexp "=") x in
if ((List.hd sl) = key) then
(key^"="^value)::(update_arg c true)
else x::(update_arg c false) in
let nargs = String.concat "&" (update_arg larg false) in
if (nargs = "") then base else base^"?"^nargs