|
本帖最后由 qingxin 于 2012-12-12 13:06 编辑
今天遇到这个问题,网上搜了一下,未果(觉得网上流传的方法太麻烦了),所以自己动手解决了。由于涉及到很多内容,具体的代码我就不贴出来了,只提供一下思路。
首先,由于前一周研究了一周正则表达式,所以自然而然我第一个想法就是用正则表达式解决这个问题,没想到顺利异常。
以下是参考代码,视实际情况而定,最好和不带条件的方法分开,不要写到一个方法里。
//自动搜索查询条件
$condition = empty($_POST) ? $_GET : $_POST;
$links = $this->links($total,$per,$seg);//这边是得到普通的分页字符串,这里只是示例,开发者依据实际情况而定
//生成查询条件
$condition_str = '?';
foreach ($condition as $key => $value)
{
$condition_str .= '&'.$key.'='.$value;
}
//正则替换并返回
return preg_replace('/href="(.*?)"/','href="$1'.$condition_str.'"', $links);
2012-12-12补充:
在生成查询字符串时还需要一步遍历get或post数组的过程(主要是为了适应post或get数组是多维数组的情况,如果能确保get或post数组始终是一维数组,忽略这段补充),建议写成一个递归函数进行调用
下面这一段
//生成查询条件
$condition_str = '?';
foreach ($condition as $key => $value)
{
$condition_str .= '&'.$key.'='.$value;
}
替换成
//生成查询条件
$condition_str = substr_replace(url_get($condition), '?', 0, 1);
引用的数组遍历函数
PHP复制代码
function url_get ($array,$key = NULL)
{
if(!is_array($array))
{
if(empty($key))
{
return NULL;
}
else
{
return '&'.$key.'='.$array;
}
}
else
{
$ret = NULL;
foreach ($array as $ke => $val)
{
$ret .= url_get ($val,$key.'['.$ke.']');
}
$ret = preg_replace('/&\[(.*?)\]/', '&$1', $ret);
return $ret;
}
}
复制代码
|
评分
-
查看全部评分
|