过滤textarea中输入以回车分隔的内容,以json格式存入数据库。读取时将json格式转换为正常内容并显示在textarea中

1、

过滤textarea中输入以回车分隔的内容,以json格式存入数据库。读取时将json格式转换为正常内容并显示在textarea中_第1张图片

        在实际应用中,遇到这种以回车分隔的字符串,单是存储来说倒是简单,但是在实际应用中还要对内容进行判断,看是否符合内容的限制,比如说图中的区域限制,我们还要对区域进行判断和限制。

        我是这么处理的:       

//首先获取字段
$limitArea = I('limit_area','','filter_keyword');
//然后对其进行回车处理,并转换为数组
$limitArea = ecplode(PHP_EOL,$limitArea);

//地区限制临时数组
$limitAreaTemp = [];
foreach ($info['limit_area'] as $area){
    //因为我有一个数据表是专门用来存储位置信息的,names:地区名称,code:区域编码
    //此类信息可以参考ip.taobao.com中的通过ip获取的位置信息
    $areaInfo = D('admin_region2')->where(array('names'=>$area))->find();
    //把输入的地址转换为区域编码存入临时数组
    $limitAreaTemp[] = $areaInfo['code'];
}

$info['limit_area'] = json_encode($limitAreaTemp);
$res = D('activity')->where(array('id' => $id))->save($info);

现在输出一遍,看下效果:

获取的$limitArea输出:

过滤textarea中输入以回车分隔的内容,以json格式存入数据库。读取时将json格式转换为正常内容并显示在textarea中_第2张图片

现在输出去除空格并组成数组的$limitArea:

过滤textarea中输入以回车分隔的内容,以json格式存入数据库。读取时将json格式转换为正常内容并显示在textarea中_第3张图片

现在输出$limitAreaTemp:

过滤textarea中输入以回车分隔的内容,以json格式存入数据库。读取时将json格式转换为正常内容并显示在textarea中_第4张图片

现在输出$info['limit_area']:

过滤textarea中输入以回车分隔的内容,以json格式存入数据库。读取时将json格式转换为正常内容并显示在textarea中_第5张图片

最终以这种格式存入数据库。

2、

现在开始看我们的调取,并展示在textarea中

$info = $this->db->find($activityID);
//我们从数据库中查询的$info['limit_area']为json格式的城市代码,我们现在需要对其进行转换成names

$info['limit_area'] = json_decode($info['limit_area']);
$limitAreaTemp = [];
foreach($info['limit_area'] as $area){
    $areaInfo = D('admin_region2')->where(['code'=>$area])->find();
    $limitAreaTemp[] = $areaInfo['names'];
}
$info['limit_area'] = join(PHP_EOL,$limitAreaTemp);
$this->assign('info',$info);

最终$info['limit_area']就是博客第一张图片的状态

 

3、前端如何判断是否在区域范围内

获取用户的ip地址进行判断,通过ip.taobao.com接口返回的城市编码,看此编码是否在此区域的数组中

$locationInfo = $region->getTaobaoIpArea(get_client_ip(0, 1));

$isInLimitArea = in_array($locationInfo['city_id'],json_decode($info['limit_area']));

 

你可能感兴趣的:(php)