通过GET将参数以通用方式传递给任何URL

tre*_*ums 1 php get

我是back_url从外面给我的.我需要生成一个散列并作出重定向到这个back_url这个PARAM: header("Location: $back_url?hash=123sdf").但问题是我不知道格式back_url.

  • 它可能是www.example.com,我做header("Location: $back_url/?hash=123sdf")sj那很好.
  • 它可能www.example.com/?param=value,如果我这样做,eader("Location: $back_url/?hash=123sdf")那是错的,因为它会www.example.com/?param=value/?hash=123asd.

等等.问题是:通过params back_url忽略其格式的通用方法是什么?

Pek*_*ica 5

一个复杂但非常干净的方式

  • 用于parse_url()从URL中将查询字符串(如果有)提取到数组中
  • 添加hash到结果数组:$params["hash"] = "1234";
  • 用于http_build_query()将参数粘合回查询字符串
  • 获取返回的所有组件parse_url()并将它们粘合回完整的URL

有一点需要注意的是,这会将URL解析为组件并将其粘合在一起,因此它可能不适用于首先被破坏的URL.