You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Lever API获取职位数据时预格式化HTML格式丢失问题

问题根因

你遇到的HTML格式完全丢失问题和前端渲染、PHP转义逻辑无关,核心是Lever Postings接口的默认返回规则导致的:

  • 调用https://api.lever.co/v1/postings接口时如果不追加特殊参数,接口会自动剥离所有职位描述里的HTML标签,content.description字段只返回无格式的纯文本内容,所有加粗、列表、下划线样式都会被清除,最终渲染就是连续的纯文本。
  • 只有在请求时携带mode=xml参数,接口才会返回保留原始HTML格式的富文本职位内容,这个参数名虽然带xml标识,但实际返回的仍然是JSON结构数据,只是内容字段保留了HTML标签。
修复方案

按以下步骤修改代码即可:

  • 修改接口请求地址,追加富文本返回参数
    把原有代码里的请求URL替换为带参数的版本,修改片段如下:
    // 原地址:$url = "https://api.lever.co/v1/postings";
    // 替换为带mode参数的地址,要求接口返回富文本内容
    $url = "https://api.lever.co/v1/postings?mode=xml";
    
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_VERBOSE, true);
    
    $headers = array(
        "Authorization: Basic apikeyherebutIhidit",
    );
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    
    $resp = curl_exec($curl);
    curl_close($curl);
    
    $jr = json_decode($resp, true);
    $jrlen = count($jr['data']);
    
  • 匹配富文本字段渲染
    追加参数后先打印单条职位的返回结构确认字段:部分API版本下富文本描述字段为content.descriptionHtml,如果原有content.description仍为纯文本,把渲染代码里的对应字段替换即可,示例修改片段:
    // 原代码:'<div class="job-description">' . $jr['data'][$x]['content']['description'] . '</div>'
    // 替换为富文本字段
    '<div class="job-description">' . $jr['data'][$x]['content']['descriptionHtml'] . '</div>'
    
  • (可选安全加固)由于职位内容来自第三方平台,直接输出HTML存在XSS注入风险,建议接入HTMLPurifier类库配置白名单,只保留业务需要的安全标签(<p>、<br>、<strong>、<u>、<ul>、<li>、<ol>等),过滤掉脚本、iframe等危险标签后再输出到页面。

内容的提问来源于stack exchange,提问作者Loizos Aristeidis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:03:26