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

php 专栏收录该内容
21 篇文章 0 订阅

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

 

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

魁哥爱吃黄焖鸡

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值