有没有一种简单的方法可以替换 Symfony 2 的引用中的 url 参数?

Is there an easy way to replace an url parameter in a referer in Symfony 2?

我正在尝试更新我的引用中的参数 url:

$referer = $request->headers->get('referer');

例如,$referer 是具有两个参数的 url:

string(96) "http://<my_url>/web/app_dev.php/urlpart/?param1=value1&param2=value2"

我想轻松地将 param1=value1 替换为 param1=updatedvalue1,例如用另一个替换。

我知道我们可以用 twig 和当前请求 url:

{{ path(app.request.attributes.get('_route'),
   app.request.query.all|merge({'sort': 'address'})) }}

是否可以在 Symfony 2 控制器中做同样的事情来更新 referer?

我在 PHP 中找到了一个带有 preg_replace 函数的解决方案,我希望有更好的方法来做它看起来很丑陋,我正在努力寻找更好的解决方案,任何帮助都会赞赏!

$referer = preg_replace('/([?&])(param1)=\w+(&|$)/', '', $referer);
$referer = preg_replace('/(param2)=\w+(&|$)/', '', $referer);

感谢您的帮助!

这应该有效:

$oldReferer = 'http://<my_url>/web/app_dev.php/urlpart/?param1=value1&param2=value2';
$newReferer = Request::create($oldReferer, 'GET', array('param1' => 'updatedvalue1'))->getUri();