是否有一种简单的方法来替换Symfony 2中的referer中的url参数?

Sun*_*ms' 2 php pcre url-parameters symfony

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

$referer = $request->headers->get('referer');
Run Code Online (Sandbox Code Playgroud)

例如,$referer是一个url whith两个参数:

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

我想param1=value1通过param1=updatedvalue1例如另一个轻松替换.

我知道我们可以twig使用当前请求url 执行此操作:

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

是否可以在Symfony 2控制器中执行相同的操作来更新引用程序?

我找到了一个具有preg_replace功能的解决方案PHP,我希望有一个更好的方法来做它看起来很丑,我想找到一个更好的解决方案,任何帮助都会得到认可!

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

谢谢您的帮助 !

小智 5

这应该工作:

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