PHP:文件系统扩展

xuo3flqw  于 2022-12-28  发布在  PHP
关注(0)|答案(4)|浏览(146)

这是我的

echo '<button><a href="'.$_SERVER['REQUEST_URI'].'&startrow='.($startrow+100).'">Next 100</a></button>';

我有2个参数在我的网址一个是运动,第二个是startrow,我怎么能只是删除'startrow'参数和它的值从网址。我想要这样的东西。

echo '<button><a href="'.REMOVE &startrow=x($_SERVER['REQUEST_URI']).'&startrow='.($startrow+100).'">Next 100</a></button>';

当我按下下下一个100按钮时,页面重新加载,并在URL中添加startrow参数,因此如果我按下下下一个100按钮5次,URL中就会有5个startrow参数,因此我想先删除以前的startrow参数,然后添加新的参数

**我的实际网址:**enquirytable.php/campaign=全部&startrow=100
**当我点击“下一个100”按钮时:**enquirytable.php/campaign=all&startrow= 100 & startrow =200
**我想要的:**查询表.php/campaign=全部&startrow=200

vnjpjtjt

vnjpjtjt1#

可能是长的,但一个准确的方式。在这里,我们使用parse_urlparse_str来实现所需的输出。
Try with an example

<?php

$url="http://www.example.com/some/path?startrow=100&campaign=abc";
echo change_url_parameter($url, "startrow", 200);

function change_url_parameter($url,$parameterName,$parameterValue) {
    $url=parse_url($url);
    parse_str($url["query"],$parameters);
    unset($parameters[$parameterName]);
    $parameters[$parameterName]=$parameterValue;
    return  sprintf("%s://%s%s?%s", 
        $url["scheme"],
        $url["host"],
        $url["path"],
        http_build_query($parameters));
}
ovfsdjhp

ovfsdjhp2#

用这种方式构建URL是不干净的,与其删除一些参数,不如从一个干净的路径开始,然后添加所需的参数。
您可以执行以下操作:

echo '<button><a href="'.$_SERVER['PHP_SELF'].'&startrow='.($startrow+100).'">Next 100</a></button>';

如果你真的想用$_SERVER['REQUEST_URI']来做这件事,这应该是可行的:

function getUrl($startRow) {
    $url = preg_replace('@&startnow=[\d]+@', '', $_SERVER['REQUEST_URI']);
    return $url.'&startrow='.$startRow;
}

// ...

echo '<button><a href="'.getUrl($startrow+100).'">Next 100</a></button>';
mwg9r5ms

mwg9r5ms3#

Sahil回答更新,所以函数可以消费参数与点和保持网址片段. PHP 7.4.

"url": "https://www.zzz.ccc/?zzz.er=ty&aa.dd=vv#123",
    "param_to_change": "zzz.er",
    "old_behave": "https://www.zzz.ccc/?zzz_er=ty&aa_dd=vv&zzz.er=4444",
    "new_behave": "https://www.zzz.ccc/?zzz.er=4444&aa.dd=vv#123"

public function change_1_url_param($url,$parameter,$parameterValue)
{
    $url_init = $url;
    $url=parse_url($url);
    parse_str($url["query"],$parameters);
    unset($parameters[$parameter]);
    $parameters[$parameter]=$parameterValue;

    $url_fragment = '';
    if(isset($url['fragment']))
       $url_fragment = '#'.$url['fragment'];

    if(mb_stripos($parameter,'.')!==false){
        $url_q = $url["query"];
        $explode_0 = explode($parameter.'=',$url_q);
        if(!isset($explode_0[1]))
            return $url_init;
        $explode_1 = explode('&',$explode_0[1]);
        $u = str_replace( $explode_1[0] , $parameterValue , $url_q );
        $u = $url["scheme"].'://'.$url["host"].$url["path"]."?".$u.$url_fragment;
    }
    else
        $u = $url["scheme"].'://'.$url["host"].$url["path"]."?".http_build_query($parameters).$url_fragment;

    return $u;
}
wnavrhmk

wnavrhmk4#

function update_params($update) {
    return $SERVER['SCRIPT_NAME'].'?'.http_build_query(array_merge($_GET, $update));
}

echo update_params(['startrow', $startrow+100]);

相关问题