我正在尝试使用此 php 中的 addUrlParameter 函数-在 url 中添加/更新参数
但我无法让它解决我的具体问题,我绝望地希望有人能帮助我。
截至目前,我正在使用它来处理表单并从表单帖子创建一个 URL
$get_elements = array_filter($_GET, "strlen");
$url = http_build_query($get_elements);
$search_pattern = array();
$search_pattern[0] = "/([?&]newpage)=[^&]*/";
$search_pattern[1] = "/([?&]next)=[^&]*/";
$search_replacements = array();
$search_replacements[0] = '';
$search_replacements[1] = '';
$new_url = preg_replace($search_pattern, $search_replacements, $url);
header("Location: index.php?page=". $_GET["newpage"] ."&".$new_url);
这很好,但是当我退后一步并为某个参数输入一个新值时,该新值不会在新 URL 中更新 - 它使用旧值。
假设我填写了我想要某种产品的 4 件商品,然后将该表格发布到下一页。然后我意识到我拥有该产品的 7 件商品 - 然后我退后一步输入 7 并再次发布。我的问题是它没有用7更新那个产品的参数,它只是插入一个新的同名参数,以7为值,但最终的url使用以4为值的参数
IE:
http://www.domain.com/formhandler.php?vent_45=&udluftning_plast=7&udluftning_fald=&udluftning_ventitegl=&tagfod=fuglegitter&chimney_afstand_tagrende=&udluftning_plast=4&tagfod=fuglegitter&afslutning_sten=dv&topsten=utop&angle_1=45&mainhouse=1&house=1&rooftype=mu&lang=dk&rooftiletype=1&rid=1&producent=h&newpage=inputdims&next=N%C3%A6ste+trin+%C2%BB
此示例中的参数在哪里udluftning_plast
- URL 有两个该参数,但使用最后一个 - 我需要它来删除旧参数并将其替换为新值。
然后我尝试使用上面链接中的 addUrlParameter 函数,但我无法让它工作。
这里棘手的部分是,在页面上填写项目数量时,需要更新不同的项目,因此它应该以某种方式动态更新 url。
编辑:
我可以看到 addUrlParameter 函数删除了设置新值的查询字符串开头的每个重复参数。所以这可能是问题所在。我究竟做错了什么?
如果我 var_dump($url_data) 在 addUrlParameter 的开头,我会得到这个带有所有参数的 URL:
array(4) { ["scheme"]=> string(4) "http" ["host"]=> string(22) "www.domain.com" ["path"]=> string(19) "/ny/formhandler.php" ["query"]=> string(431) "vent_45=&udluftning_plast=6&udluftning_fald=&udluftning_ventitegl=2&tagfod=fuglegitter&chimney_afstand_tagrende=&vent_45=&udluftning_plast=4&udluftning_fald=&udluftning_ventitegl=2&tagfod=fuglegitter&chimney_afstand_tagrende=&afslutning_sten=dv&topsten=utop&angle_1=45&mainhouse=1&house=1&rooftype=mu&lang=dk&rooftiletype=1&rid=1&producent=h&newpage=venting&next=N%C3%A6ste+trin+%C2%BB&newpage=inputdims&next=N%C3%A6ste+trin+%C2%BB" }
当我在函数末尾使用 var_dump($url_data) 时,我得到这个 URL 并删除了更新的参数:
array(4) { ["scheme"]=> string(4) "http" ["host"]=> string(22) "www.domain.com" ["path"]=> string(19) "/ny/formhandler.php" ["query"]=> string(274) "vent_45=&udluftning_plast=4&udluftning_fald=&udluftning_ventitegl=2&tagfod=fuglegitter&chimney_afstand_tagrende=&afslutning_sten=dv&topsten=utop&angle_1=45&mainhouse=1&house=1&rooftype=mu&lang=dk&rooftiletype=1&rid=1&producent=h&newpage=inputdims&next=N%C3%A6ste+trin+%C2%BB" }
我这样调用函数:
foreach($_GET as $key => $value) {
addURLParameter("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", $key, $value);
}