大家好!有个问题想请教下,公司要我给IOS提供接口,用php实现,是json格式的,如果转换为json数据中含用html,IOS那边就会出错,那该如何提供含html数据的接口给ios呢?echo json_encode($data,JSON_UNESCAPED_UNICODE);中$data有html,如何处理?弄过的大神帮忙一下,谢谢了

解决方案 »

  1.   

    json_encode第一个参数必须为数组格式,如果是想把一段HTML通过API返回给IOS用,可能用数组包装后再json_encode,如:array('html'=>'<html>....</html>'),没理解错吧
    群:318455728,PHPer有问必答。Zend、Laravel、Yii、ThinkPHP、Phalcon、Symfony、CodeIgniter、Kohana等各种基于框架或非框架的PHP开发交流群,欢迎加入。
      

  2.   

    既然 json数据中含用html,IOS那边就会出错
    那么为何还要吧 html 发出去呢?
      

  3.   

    把代码贴完整看看,看看你的data是怎么来的。
      

  4.   

    两种方法:
    1.api接口里返回的json数据数组信息,不要传html,html内容可通过接口返回的数据后,调用的地方自行拼接2.返回html内容后报什么错,按理说如果html内容正常转义,应该不会报错的
      

  5.   

    代码:defined('IN_IA') or exit('Access Denied');
    $pid=$_GPC['pid'];
    $cid=$_GPC['cid'];
    $id=$_GPC['id'];
    if($id==''){
    if($pid==''&&$cid==''){
    $data=pdo_fetchall('SELECT * FROM ' . tablename('bj_qmxk_category') . "where weid = 2 and parentid=0 and enabled=1");
    }elseif($pid!=''&&$cid==''){
    $data=pdo_fetchall('SELECT * FROM ' . tablename('bj_qmxk_category') . "where weid = 2 and parentid='{$pid}'");
    }elseif($pid!=''&&$cid!=''){
    $tablename = tablename('bj_qmxk_goods');
    $pindex = max(1, intval($_GPC['page']));
    $psize = 10;
    $where = '';
    $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . $tablename . ' WHERE status=1 AND deleted = 0 AND weid = ' . $weid . $where);
    $pager = pagination($total, $pindex, $psize);
    $data = pdo_fetchall('SELECT a.id,title,etprice,thumb,b.country,b.img FROM ' . $tablename . ' a LEFT JOIN ' . tablename('bj_qmxk_country') . ' b ON a.country=b.id WHERE status=1 AND deleted = 0 AND a.weid = 2' . $where . ' LIMIT ' . ($pindex - 1) * $psize . ',' . $psize);
    }
    }else{
    $data = pdo_fetch('SELECT * FROM ' . tablename('bj_qmxk_goods') . "where id = {$_GPC['id']}");
    }//$tmp_data = str_replace("\"", "'", $data['content']);
    //echo $tmp_data;
    //$data['content'] = $tmp_data;
    echo json_encode($data,JSON_UNESCAPED_UNICODE);
      

  6.   

    Quote: 引用 1 楼 czp010443 的回复:

    是从数据库直接查出来就json_encode();的
      

  7.   

    Quote: 引用 3 楼 jordan102 的回复:
    defined('IN_IA') or exit('Access Denied');
    $pid=$_GPC['pid'];
    $cid=$_GPC['cid'];
    $id=$_GPC['id'];
    if($id==''){
    if($pid==''&&$cid==''){
    $data=pdo_fetchall('SELECT * FROM ' . tablename('bj_qmxk_category') . "where weid = 2 and parentid=0 and enabled=1");
    }elseif($pid!=''&&$cid==''){
    $data=pdo_fetchall('SELECT * FROM ' . tablename('bj_qmxk_category') . "where weid = 2 and parentid='{$pid}'");
    }elseif($pid!=''&&$cid!=''){
    $tablename = tablename('bj_qmxk_goods');
    $pindex = max(1, intval($_GPC['page']));
    $psize = 10;
    $where = '';
    $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . $tablename . ' WHERE status=1 AND deleted = 0 AND weid = ' . $weid . $where);
    $pager = pagination($total, $pindex, $psize);
    $data = pdo_fetchall('SELECT a.id,title,etprice,thumb,b.country,b.img FROM ' . $tablename . ' a LEFT JOIN ' . tablename('bj_qmxk_country') . ' b ON a.country=b.id WHERE status=1 AND deleted = 0 AND a.weid = 2' . $where . ' LIMIT ' . ($pindex - 1) * $psize . ',' . $psize);
    }
    }else{
    $data = pdo_fetch('SELECT * FROM ' . tablename('bj_qmxk_goods') . "where id = {$_GPC['id']}");
    }//$tmp_data = str_replace("\"", "'", $data['content']);
    //echo $tmp_data;
    //$data['content'] = $tmp_data;
    echo json_encode($data,JSON_UNESCAPED_UNICODE);
      

  8.   

    json是用来传数据的,不要瞎搞什么html代码,html代码让客户端写。
    这个规则不定清楚,以后麻烦事更多。
      

  9.   

    这个我能理解   毕竟有时候要提供文章内容或者一些本来设计数据库的时候字段就有html标签的接口   1.把html标签过滤了  
    2.文章用webview吧