如題,例如我有一個(gè)地址:abc.com/?abc=123&xyz=987我想把其中的abc變量修改為456,其他變量維持原狀,返回新的URI地址。目前使用的方法是正則匹配:
function uridis($act,$val){return preg_replace('/(^|&)'.$act.'\=(?:.*?)($|&)/i','\1'.$act.'='.$val.'\2',$_SERVER['QUERY_STRING']);}
在PHP文件中調(diào)用:
uridis('abc',456);
如果這樣實(shí)現(xiàn)的話(huà),正則表達(dá)式會(huì)占用387KB左右的內(nèi)存。而使用str_replace進(jìn)行替換:
function uridis($act,$val){return trim(str_replace('&'.$act.'='.$_GET[$act].'&','&'.$act.'='.$val.'&','&'.$_SERVER['QUERY_STRING'].'&'),'&');}
則占用的內(nèi)存更多,大概392KB左右。循環(huán)$_GET更不用想,根本沒(méi)法看。因?yàn)槲以陧?yè)面中需要生成大概幾十個(gè)替換后的URI,程序效率需求非常高。所以請(qǐng)教各位有沒(méi)有更加輕量的解決方案?非常感謝!
1 回答

斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
function uridis($act,$val){
$get=$_GET;
$get[$act] = $val;
return http_build_query($get);
}
才幾十個(gè)替換而已,不用考慮性能
- 1 回答
- 0 關(guān)注
- 369 瀏覽
添加回答
舉報(bào)
0/150
提交
取消