吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1427|回复: 10
收起左侧

[已解决] php请求数据去除CDATA

[复制链接]
Zihao88 发表于 2021-2-1 11:03
本帖最后由 Zihao88 于 2021-2-28 21:07 编辑

QQ截图20210201105937.png 找到一个天气api,但风力字段出现了<![CDATA[2级]]>
使用网上的方法“simplexml_load_string($data['data']['forecast']['fengli'], null, LIBXML_NOCDATA);”会报错。。
那么怎样在调用api的时候只保留“2级”呢?求解
这是我的代码。。。
QQ截图20210201110156.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jobinLi 发表于 2021-2-1 11:20
[PHP] 纯文本查看 复制代码
$string = '<![CDATA[2级]]>';
$xml = '<xml><content>' . $string . '</content></xml>';
$result = simplexml_load_string($xml, 'SimpleXMLElement');

echo (string)$result->content, PHP_EOL;

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Zihao88 + 1 + 1 谢谢@Thanks!

查看全部评分

fnp902003 发表于 2021-2-1 11:10
Su、 发表于 2021-2-1 11:19
qa2080639 发表于 2021-2-1 11:21
字符串替换为空2次:<![CDATA[ 和 ]]>
jobinLi 发表于 2021-2-1 11:22
jobinLi 发表于 2021-2-1 11:20
[mw_shl_code=php,true]$string = '';
$xml = '' . $string . '';
$result = simplexml_load_string($xml ...

首先 php -m 确认下有没有libxml 和 SimpleXML 拓展
jiujiukeji 发表于 2021-2-1 12:01
[PHP] 纯文本查看 复制代码
<?php
header("Content-Type: text/xhtml; charset=UTF-8");
$url = 'compress.zlib://http://wthrcdn.etouch.cn/weather_mini?city=北京';
$json = file_get_contents($url);
$arr = json_decode($json, true);
foreach ($arr['data'] as $key => $value) {
    if (isset($value['fl'])) {
        $value['fl'] = get_tag_data($value['fl'], '<![CDATA[', ']]>');
    }
    if ($key=='forecast') {
        //echo 222;die;
        foreach ($value as $k=> $v) {
            if (isset($v['fengli'])) {
                $value[$k]['fengli'] = get_tag_data($v['fengli'], '<![CDATA[', ']]>');
            }

        }

    }
    $data[$key] = $value;
}

function get_tag_data($str, $start, $end)
{
    if ($start == '' || $end == '') {
        return;
    }
    $str = explode($start, $str);
    $str = explode($end, $str[1]);
    return $str[0];
}
归隐小赵 发表于 2021-2-1 12:16
<?php//JSON字符串
$json='xxxx';
//替换为空
$result=str_replace("<![CDATA[","",str_replace("]]>","",$json));
//拿到数据
$result=json_decode($result,true);
kulerop 发表于 2021-2-1 12:28
tinglie 发表于 2021-2-1 17:52
[PHP] 纯文本查看 复制代码
$Yjson = [
            'yesterday' => [
                'data' => '31日星期日',
                'high:高温 0℃',
                'fx'=>'东北风',
                'low'=>'低温 -5℃',
                'f1' => '<![CDATA[1级]]>',
                'type'=> '晴'
            ],
        ];
        foreach ($Yjson as $key => $value)
        {
            $value = (str_replace('<![CDATA[', '',str_replace(']]>', '', $value)));
            foreach ($value as $k => $v)
            {
                echo  $v.'<br>';
            }
        }

参考楼上大佬的替换思想。交一份作业,嘿嘿
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-16 19:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表