过滤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输出:

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

现在输出$limitAreaTemp:

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

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

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']));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值