如何用PHP的file_get_contents提取API页面<pre>标签内的原始数据为数组?
提取API页面
标签内数据并转为PHP数组
你当前拿到的是完整的HTML页面内容,要提取底部
标签里的数据并转成数组,按以下步骤操作:1. 解析HTML提取
标签内容使用PHP的
DOMDocument类解析HTML结构,定位到标签并取出其文本内容:// 屏蔽HTML解析时的警告(避免页面格式不规范导致报错) libxml_use_internal_errors(true); $dom = new DOMDocument(); $dom->loadHTML($response); libxml_clear_errors(); // 查找所有<pre>标签,取第一个(若页面有多个可调整索引) $preTags = $dom->getElementsByTagName('pre'); if ($preTags->length > 0) { $rawData = $preTags->item(0)->nodeValue; } else { die('未找到目标<pre>标签'); }2. 将原始数据转为PHP数组
假设
标签内的内容是JSON格式(这类API通常返回JSON),用json_decode将其转为关联数组:// 第二个参数设为true,把JSON对象转为PHP关联数组 $dataArray = json_decode($rawData, true); // 检查JSON解析是否成功 if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解析失败:' . json_last_error_msg()); }完整代码示例
替换你原来的代码,整合后的完整版本:
$search = mysqli_real_escape_string($db_conx, $_POST['search']); $api_key = 'xxxxxxxx'; $api_url = 'https://www.kbo.party/api/v1/enterprise/' . $search . '?key=' . $api_key; $response = file_get_contents($api_url); if (!$response) { die('无法获取API响应'); } // 解析HTML提取<pre>内容 libxml_use_internal_errors(true); $dom = new DOMDocument(); $dom->loadHTML($response); libxml_clear_errors(); $preTags = $dom->getElementsByTagName('pre'); if ($preTags->length === 0) { die('未找到目标<pre>标签'); } $rawData = $preTags->item(0)->nodeValue; // 转成数组 $dataArray = json_decode($rawData, true); if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解析失败:' . json_last_error_msg()); } // 输出数组(或进行后续业务处理) http_response_code(200); print_r($dataArray);内容的提问来源于stack exchange,提问作者Senne Vandenputte
相关产品推荐
相关产品推荐

