如何在第一个后更换所有问号

时间:2015-06-26 23:25:04

标签: php regex

因此,我的很多表单系统都会重定向回到上一页,但是,它们会在此过程中显示一条消息。我显示消息的方式是在?message=messageCode中使用URL

但是,如果他们使用已经有查询字符串的页面中的表单,它会添加第二个查询字符串,搞乱一切。

实施例: 如果我要从导航栏登录URLmywebsite.com/something?message=1”,则会登录,但会重定向到“mywebsite.com/something?message=1?message=2

这样不会显示任何消息。

我在这里问的是,如何在第一个问号之后更改所有问号,并签名?

实施例: 来自:mywebsite.com/page?blah=1?something=2?hi=3 收件人:mywebsite.com/page?blah=1&something=2&hi=3

我已经四处寻找,并尝试过我自己的一些方法,但似乎没有任何工作正常。

2 个答案:

答案 0 :(得分:1)

您应该做的是构建一个正确的网址,在适当的时候附加?&

$url = 'mywebsite.com/something?message=1';
$new_url = sprintf('%s%s%s', 
    $url, 
    strpos($url, '?') === false ? '?' : '&',
    http_build_query(['message' => 2])
);

或者,首先解析先前的URL并合并查询字符串。

答案 1 :(得分:0)

使用如下: -

<% @pictures.each do |picture| %>
   <li>
<div class="thumbnail">
    <%= link_to image_tag(picture.asset.url(:small)),  album_picture_path(@user, @album, picture) %><br /><br />
    <div class="caption">
        <% if picture.caption? %><%= picture.caption %><br /><br /><% end %>

        <%= link_to 'View full size', album_picture_path(@user, @album, picture) %>

        <% if can_edit_picture?(picture) %>
        <%= link_to "Edit", edit_album_picture_path(@album, picture) %>
        <%= link_to "Delete", album_picture_path(@album, picture), method: :delete, data: { confirm: "Are you sure?" } %>
        <% end %>
        </div>
        </div>
    </li>

输出: - https://eval.in/388308