function cookieKeyword( $word = "", $i = 5 ){
if( ! trim( $word ) ) return 0;
if( ! isset( $_COOKIE["c_keyword"] ) )
$_COOKIE["c_keyword"][] = $word;
else {
if( count($_COOKIE["c_keyword"]) >= $i ) {
ksort($_COOKIE["c_keyword"]);
array_shift( $_COOKIE["c_keyword"] );
}
$_COOKIE["c_keyword"][] = $word;
}
}
if( ! trim( $word ) ) return 0;
if( ! isset( $_COOKIE["c_keyword"] ) )
$_COOKIE["c_keyword"][] = $word;
else {
if( count($_COOKIE["c_keyword"]) >= $i ) {
ksort($_COOKIE["c_keyword"]);
array_shift( $_COOKIE["c_keyword"] );
}
$_COOKIE["c_keyword"][] = $word;
}
}
第一次录入:北京、上海、天津
第二次录入:海南、广州、武汉
此时$_COOKIE中的值应该是:
武汉、上海、天津、海南、广州。武汉替换第一个录入的北京。
第三次录入:成都、昆明
此时$_COOKIE中的值应该是:
武汉、成都、昆明、海南、广州
要看浏览器设置
有些不允许保存COOKIE
多个关键词你只要多次运行我提供的函数就OK了。
我写出的函数支持多次录入的,参数$word表示关键字,$i表示保留关键词的个数。
<?php
$cookie_time = time()+3600*24*365;
$tags = array('上海','北京','天津','南京','武汉','广州');$t_str = implode(",", $tags);
last_cookies($t_str,5,'tags',$cookie_time); /**
* 保存最近录入的字符到cookie
*
* @param 参数
$c_value 录入的字串,多个字串间用','号分割;
$c_num cookie中最多保存值的个数;
$c_name cookie值所定义的名称;
$c_time cookie生效时间;
* @access 权限
* @return 返回值
*/ function last_cookies($c_value,$c_num,$c_name,$c_time){
//setcookie($c_name, $c_value, $c_time);
//取出字串成为数组;
if(!isset($_COOKIE[$c_name])){
$c_arr = explode(",", $c_value);
if(count($c_arr)>$c_num){ //超过限定数,则砍去
$n = count($c_arr)-$c_num;
for($i=0;$i<$n;$i++){
array_shift($c_arr);
}
} }else{
$get_cookie = $_COOKIE[$c_name];//取出cookie中的历史记录;
$last_arr = explode(",", $get_cookie);
$c_arr = explode(",", $c_value);
foreach($c_arr as $v){
array_push($last_arr,$v); //依次push
}
//移除重复
$c_arr = array_unique($last_arr);
if(count($c_arr)>$c_num){ //超过限定数,则砍去
$n = count($c_arr)-$c_num;
for($i=0;$i<$n;$i++){
array_shift($c_arr);
}
} }
$c_str = implode(",", $c_arr);
setcookie($c_name, $c_str, $c_time);
}
}
?>
$cookie_time = time()+3600*24*365;
$tags = array('上海','北京','天津','南京','武汉','广州');//新输入的关键词
$cookie_array = isset($_COOKIE["c_keyword"]) ? $_COOKIE["c_keyword"] : array();//COOKIE中保存的是数组$result = array_merge( $tags, $cookie_array );
while( count( $result ) > 5 ) {
array_pop( $result );//将数组最后一个单元弹出
}
setcookie( "c_keyword", $result, $cookie_time );
?>
$tags = array('广州','上海','北京','天津','南京','武汉');//新输入的关键词
$cookie_array = isset($_COOKIE["c_keyword"]) ? explode( ",", $_COOKIE["c_keyword"] ) : array();//COOKIE中保存的是数组$result = array_merge( $tags, $cookie_array );
while( count( $result ) > 5 ) {
array_pop( $result );//将数组最后一个单元弹出
}
setcookie( "c_keyword", implode(",", $result), $cookie_time );
print_r($_COOKIE["c_keyword"]);