问题在于:
我有一个基于查询字符串的页面,如:
localhost\sandbox\hotsite.php?id=14665&open=hot_promocoes&titulo=127121
我正在为这个CMS开发一个分页功能,所以我想为我做一些事情:
localhost\sandbox\hotsite.php?id=14665&open=hot_promocoes&titulo=127121&pg=1
现在,我已经创建了一个代码,它接受整个网址并添加pg = 1,但是当我这样做并点击一些新页面链接时,例如第3页,链接如下所示:< / p>
localhost\sandbox\hotsite.php?id=14665&open=hot_promocoes&titulo=127121&pg=1&pg=3.
当我点击页面链接时,它会永远重复(titulo=127121&pg=1&pg=3&pg=2&pg=4&pg=8&pg=9&pg=2&pg=3
),当它发生时,我的分页代码会变得疯狂,如果我继续点击我的代码就疯了。我坚持这一点,我无法想出办法。
附加信息:每个页面都有不同的结构,所以
如果内容是照片,则链接如下所示:
本地主机\沙箱\ hotsite.php ID = 14665&安培;打开= hot_albums&安培; TITULO = 127991
如果内容是视频,则链接如下所示:
本地主机\沙箱\ hotsite.php ID = 14665&安培;开放=视频&安培;专辑= 1348&安培; TITULO = 11121
所以我不能使用php中的构建字符串函数构建任何东西,导致我知道的唯一查询字符串值是id,它将在所有页面上,但其他页面不是常量。
所以,我需要你的帮助:)。
// START OF FUNCTION
function stringadd($query_text) {
$query = $query_text;
$pound = "";
$poundPos = -1;
//Is there a #?
if ( ( $poundPos = strpos( $url_atual, "#" ) ) !== false )
{
$pound = substr( $url_atual, $poundPos );
$url_atual = substr( $url_atual, 0, $poundPos );
}
$separator = (parse_url($url_atual, PHP_URL_QUERY) == NULL) ? '?' : '&';
$url_atual .= $separator . $query . $pound;
echo "".$url_atual;
}
// here is what i do to execute the function:
<?php echo stringadd('pg=').$total_paginas ;?>
答案 0 :(得分:3)
parse_str
函数将为您提供查询字符串值中的一组键值对。处理数组会使事情更清晰,因为现有的键本身会被覆盖而不是附加。
function setQueryString($url, $key, $val){
$pUrl = parse_url($url);
if(isset($pUrl['query']))
parse_str($pUrl['query'], $pUrl['query']);
else $pUrl['query'] = [];
$pUrl['query'][$key] = $val;
$scheme = isset($pUrl['scheme']) ? $pUrl['scheme'].'://' : '';
$host = isset($pUrl['host']) ? $pUrl['host'] : '';
$path = isset($pUrl['path']) ? $pUrl['path'] : '';
$path = count($pUrl['query'])>0 ? $path.'?' : $path;
return $scheme . $host . $path . http_build_query($pUrl['query']);
}