Php 字符串URL中的多个字符串之一

Php 字符串URL中的多个字符串之一,php,Php,两种情况: 用例: 如果场景1为真,我需要添加字符串?string1=foo 如果场景2为真,我需要删除string2=foo2并放入string3=foo3 我遇到的问题是: 如果已经有一个字符串,我将需要添加“&”,否则它将只是“?” 我不知道如何获取最后一个字符串并替换它 如何修复此问题?URL参数始终位于$\u GET数组中。您可以使用它来构建参数列表,然后使用http\u build\u query来创建URL查询字符串 $new_url_params = $_GET; if (

两种情况:

  • 用例:

  • 如果场景1为真,我需要添加字符串
    ?string1=foo
  • 如果场景2为真,我需要删除string2=foo2并放入string3=foo3
  • 我遇到的问题是:

  • 如果已经有一个字符串,我将需要添加“&”,否则它将只是“?”
  • 我不知道如何获取最后一个字符串并替换它

  • 如何修复此问题?

    URL参数始终位于
    $\u GET
    数组中。您可以使用它来构建参数列表,然后使用
    http\u build\u query
    来创建URL查询字符串

    $new_url_params = $_GET;
    if ( count($new_url_params)==0 ) {
        $new_url_params['string1']='foo';
    } else if ( isset($new_url_params['string2']) ) {
        unset($new_url_params['string2']);
        $new_url_params['string3'] = 'foo3';
    }
    $new_url = 'http://www.example.com/index.php?'.http_build_query($new_url_params);
    

    我想你可能想做一些更复杂的事情。因此,您可能需要查看
    parse\u url
    以获取url的各个部分。

    url参数始终位于
    $\u get
    数组中。您可以使用它来构建参数列表,然后使用
    http\u build\u query
    来创建URL查询字符串

    $new_url_params = $_GET;
    if ( count($new_url_params)==0 ) {
        $new_url_params['string1']='foo';
    } else if ( isset($new_url_params['string2']) ) {
        unset($new_url_params['string2']);
        $new_url_params['string3'] = 'foo3';
    }
    $new_url = 'http://www.example.com/index.php?'.http_build_query($new_url_params);
    

    我想你可能想做一些更复杂的事情。因此,您可能需要查看
    parse_url
    以获取url的各个部分。

    我能够在
    处找到
    $\u服务器['REQUEST_URI']
    strpos
    ,然后确定是否需要保留
    或添加
    &
    ,后跟字符串。当我需要切换最后一个字符串时,我做了一个
    str\u replace
    。我不知道这是否是最好的解决方案,但我很高兴能让它发挥作用……到目前为止。

    我能够在
    中添加
    $\u服务器['REQUEST\u URI']
    strop
    ,然后确定是否需要保留
    或添加
    &
    ,后跟字符串。当我需要切换最后一个字符串时,我做了一个
    str\u replace
    。我不知道这是否是最好的解决方案,但我很高兴它能起作用……到目前为止。

    你应该阅读关于
    regex
    @RicardoLohmann的内容。我认为OP在这种情况下不需要
    regex
    。)可以使用简单的数组操作来完成。你说呢?@PraveenKumar有很多方法。你应该阅读
    regex
    @RicardoLohmann我认为在这种情况下,OP不需要
    regex
    。)可以使用简单的数组操作来完成。你说什么?@PraveenKumar有很多方法。