我有几个函数可以清理get和post中的所有内容,但是这个函数必须更具体一些,我有一个生成链接的数组,如
array(
1 => http://site/something/another/?get_something=1
2 => http://site/something/another2/?get_something=1
)
还有一个正在清理get和post的函数但是该函数会清除这个数组值中的所有内容,所以我留下了
httpsitesomethinganotherget_something1
有人可以在get_something=
之后帮助匹配一切
并清除它或用get_something = 1替换它,类似
$clear = preg_match('/^[A-Za-z0-9]+$/', $array[1]);
preg_replace("/get_something=".$clear."/i","",$array[1]);
答案 0 :(得分:1)
您应该使用parse_url
,但这是一个正则表达式实现,以防您好奇:
$urls = array
(
'http://site/something/another/?get_something=1',
'http://site/something/another2/?get_something=1',
'http://site/something/another/?get_something=1&foo=bar',
'http://site/something/another/?foo=bar&get_something=1',
);
$urls = preg_replace('~[?&]get_something=.*$~i', '', $urls);
print_r($urls);
Array
(
[0] => http://site/something/another/
[1] => http://site/something/another2/
[2] => http://site/something/another/
[3] => http://site/something/another/?foo=bar
)
答案 1 :(得分:0)
如果您尝试解析网址,最好的办法是使用parse_url
,删除不需要的查询元素,然后使用http_build_url
进行重建。我就是这样做的:
for($i = 0; $i < count($linkArray); $i++) {
// get original link and parse it
$link = parse_url($linkArray[$i]);
// replace the query portion
$link["query"] = "get_something=1";
// build the new URL
$linkArray[$i] = $link["scheme"] . "://" . $link["hostname"] . $link["path"] . "?" . $link["query"] . "#" . $link["fragment"]
// done
}