【发布时间】:2014-08-03 14:42:46
【问题描述】:
问题来了:
我有一个完全基于查询字符串的页面,例如:
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
现在,我创建了一个获取整个 URL 并添加 pg=1 的代码,但是当我这样做并单击一些新页面链接(例如第 3 页)时,链接如下所示:
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),当它发生时,我的分页代码会发疯,如果我继续点击我的代码就会发疯。我被困在这个问题上,我只是想不出办法。
附加信息:每个页面都有不同的结构,所以
-
如果内容是照片,则链接如下所示:
localhost\sandbox\hotsite.php?id=14665&open=hot_albums&titulo=127991
-
如果内容是视频,则链接如下所示:
localhost\sandbox\hotsite.php?id=14665&open=videos&album=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 ;?>
【问题讨论】:
-
在继续之前,您必须了解 URL 使用斜杠而不是反斜杠。另外,您没有发布代码。
-
我知道这是旧的,但用于遗留目的;只需使用:
echo http_build_url($url_atual, array("query" => "pg=".$total_paginas), HTTP_URL_JOIN_QUERY);。但是您需要pecl install pecl_http或通过composer 安装jakeasmith/http_build_url。
标签: php query-string duplicate-removal