帝国官方结合项假如同一个字段不同值点击两次以上url就会呈现重复的参数,当然对功用是没有影响的,感觉不大漂亮!
优化前:

/e/action/ListInfo.php?&classid=19&orderby=psalenum&myorder=1&ph=1&classid=19&pbrand=27&orderby=psalenum&myorder=1&myorder=1

优化后:

/e/action/ListInfo.php?classid=19&orderby=psalenum&myorder=1&ph=1&pbrand=27优化办法

在官方的结合项的函数办法echo $allstr;这行代码的前面刺进以下代码即可:

//新增代码---jimmy.start-----
preg_match_all('/<ahref="(.*?)".*?>(.*?)</a>/i',$allstr,$matches);
for($i=0;$i<count($matches[1]);$i++){
$url=$matches[1][$i];
$parts=parse_url($url);
$query=explode('&',$parts[query]);
$output=array();
foreach($queryas$key=>$value){
if($value){
$params=explode('=',$value);
if($params[0]){
$output[$params[0]]=urldecode($params[1]);
}
}
}
$newurl=$parts[path].'?'.http_build_query($output);
$allstr=str_replace('href="'.$url.'"','href="'.$newurl.'"',$allstr);
}
//新增代码---jimmy.end-----

假如有多个结合项,能够把上面的代码放到一个函数里边调用办法就愈加简略了,只需把echo $allstr;替换成echo beautifyUrl($allstr);即可

functionbeautifyUrl($allstr){
//新增代码---jimmy.start-----
preg_match_all('/<ahref="(.*?)".*?>(.*?)</a>/i',$allstr,$matches);
for($i=0;$i<count($matches[1]);$i++){
$url=$matches[1][$i];
$parts=parse_url($url);
$query=explode('&',$parts[query]);
$output=array();
foreach($queryas$key=>$value){
if($value){
$params=explode('=',$value);
if($params[0]){
$output[$params[0]]=urldecode($params[1]);
}
}
}
$newurl=$parts[path].'?'.http_build_query($output);
$allstr=str_replace('href="'.$url.'"','href="'.$newurl.'"',$allstr);
}
//新增代码---jimmy.end-----
return$allstr;
}


声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:123456@qq.com 我们将配合处理!

原文地址:帝国cms二次开发结合项url参数优化发布于2022-06-23 07:43:16

相关推荐