0

値がある場合は値を置き換えたいURLがありますが、ない場合は追加します。

たとえば、私のURLは次のようになりhttp://www.example.com/online/admin/users?p=Name&sort=user&dir=descます。URLにクエリが既に存在する場合は再度書き込み、存在しない場合は追加するスクリプトを作成します。「a」タグに書き込みたいのですが、sortとdirに選択した値が異なります。

AddQuerystringVariableというWebサイトでコードを見つけました

function add_querystring_var($url, $key, $value) {
    $url = preg_replace('/(.*)(?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&');
    $url = substr($url, 0, -1);
    if (strpos($url, '?') === false) {
        return ($url . '?' . $key . '=' . $value);
    } else {
        return ($url . '&' . $key . '=' . $value);
    }
}

私の唯一の問題は、私が望むことをするためにそれをどのように使用するかがわからないことです。

これは私がこれまでに持っているコードです

add_querystring_var("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'],"sort","lvl");
add_querystring_var("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'],"dir","asc");

しかし、それは私のために何も書いていませんので、私はここから何をすべきかわかりません。

簡単になることはわかっていますが、PHPのこの分野は初めてです。:D

編集

これまでのコード

$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
function add_querystring_var($url, $key, $value) {
    $urlarray = parse_url($url);
    parse_str($urlarray['query'],$queryarray);
    $queryarray[$key]=$value;
    $queryarray = http_build_query($queryarray);
    return http_build_url($url,array('query'=>$queryarray),HTTP_URL_JOIN_QUERY);
}
$url_id=add_querystring_var($url,"sort","lvl");
$url_id=add_querystring_var($url,"dir",$dir);

<?php echo '<a href="'.$url.'">New Anchor</a>'; ?>

しかし、これは空白になりました。これ以上のアイデアはありますか?これまでのすべての入力に感謝します。

4

2 に答える 2

0

これまでに得たものを使用して、次のように少し変更することができます。

$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
//your add_querystring_var() returns the new url, it doesn't echo it to the screen
$url=add_querystring_var($url,"sort","lvl");
$url=add_querystring_var($url,"dir","asc");

echo '<a href="'.$url.'">New Anchor</a>';
于 2012-07-26T09:46:18.710 に答える
0

parse_urlparse_strを使用することをお勧めします

function add_querystring_var($url, $key, $value) {
    $urlarray = explode('?',$url);
    $query = '';
    if(isset($urlarray[1]))
        $query = $urlarray[1];
    parse_str($query,$queryarray);
    $queryarray[$key]=$value;
    $queryarray = http_build_query($queryarray);

    return $urlarray[0].'?'.$queryarray;
}

このように呼び出します

add_querystring_var("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'],'sort','id');

またはあなたの特定のケースのために

<?php 
$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url=add_querystring_var($url,"sort","lvl");
$url=add_querystring_var($url,"dir", $dir);
echo '<a href="'.$url.'">New Anchor</a>'; 
?>

テスト済み

于 2012-07-26T09:29:19.613 に答える