有没有一种简单的方法可以在 Symfony 2 中替换引用者中的 url 参数?
Posted
技术标签:
【中文标题】有没有一种简单的方法可以在 Symfony 2 中替换引用者中的 url 参数?【英文标题】:Is there an easy way to replace an url parameter in a referer in Symfony 2? 【发布时间】:2015-10-30 15:18:50 【问题描述】:我正在尝试更新引荐来源网址中的参数:
$referer = $request->headers->get('referer');
例如,$referer
是一个带有两个参数的 url:
string(96) "http://<my_url>/web/app_dev.php/urlpart/?param1=value1¶m2=value2"
我想轻松地将param1=value1
替换为param1=updatedvalue1
,例如用另一个替换。
我知道我们可以使用 twig
和当前请求的 url 来做到这一点:
path(app.request.attributes.get('_route'),
app.request.query.all|merge('sort': 'address'))
是否可以在 Symfony 2 控制器中执行相同的操作来更新引用?
我在PHP
中找到了带有preg_replace
函数的解决方案,我希望有更好的方法来解决它看起来很丑陋,我正在努力寻找更好的解决方案,任何帮助将不胜感激!
$referer = preg_replace('/([?&])(param1)=\w+(&|$)/', '', $referer);
$referer = preg_replace('/(param2)=\w+(&|$)/', '', $referer);
感谢您的帮助!
【问题讨论】:
【参考方案1】:这应该可行:
$oldReferer = 'http://<my_url>/web/app_dev.php/urlpart/?param1=value1¶m2=value2';
$newReferer = Request::create($oldReferer, 'GET', array('param1' => 'updatedvalue1'))->getUri();
【讨论】:
这正是我想要的!以上是关于有没有一种简单的方法可以在 Symfony 2 中替换引用者中的 url 参数?的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种正确的方法可以在 symfony 中使用 SwiftMailer 包将 NTLM 身份验证类型添加到 SwiftMailer 中?