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

PHP使用strip_tags处理JSON转Excel时保留文件链接的问题咨询

PHP提取HTML中a标签href值导出到CSV的解决方案

问题根源

原有代码存在两个核心问题:

  • strip_tags 第三个参数要求传入字符串格式的允许标签,你传入['<a>']数组格式不符合语法要求,导致部分PHP版本无法正确保留a标签,后续正则匹配失效
  • 第二条匹配非http/https开头链接的正则,直接返回了a标签的文本内容(也就是你看到的filename.pdf),没有提取href属性的路径值

方案1:正则快速修复(适配简单场景)

直接自定义处理函数替换原来的array_map逻辑,代码如下:

fputcsv($fh,["title", "field_tags","field_risk_minimization_type","field_drug_class","field_hcpg","field_patient_card","field_risk_1","field_risk_minimization_type_1", "field_tags_1", "field_specialty_theraputic_area_","field_healthcare_provider_checkl","field_dhpc" ]);
if (is_array($jsonDecoded)) {
  foreach ($jsonDecoded as $line) {
    if (is_array($line)) {
      // 自定义处理每个字段的函数
      $data = array_map(function($content) {
        // 先保留a标签,这里传入字符串格式的允许标签
        $content = strip_tags($content, '<a>');
        // 提取所有a标签的href属性值,替换a标签为对应href
        $content = preg_replace('~<a\s+[^>]*href="([^"]+)"[^>]*>.*?</a>~is', '$1', $content);
        // 兜底清理剩余可能存在的HTML标签
        $content = strip_tags($content);
        return $content;
      }, $line);
      fputcsv($fh,$data);
    }
  }
}
fclose($fh);

如果你的a标签href用单引号包裹,可以把正则里的"换成['"]适配。

方案2:DOMDocument稳定方案(兼容复杂HTML场景)

如果HTML结构不规范,正则容易匹配出错,用PHP内置的DOM解析器更可靠:

fputcsv($fh,["title", "field_tags","field_risk_minimization_type","field_drug_class","field_hcpg","field_patient_card","field_risk_1","field_risk_minimization_type_1", "field_tags_1", "field_specialty_theraputic_area_","field_healthcare_provider_checkl","field_dhpc" ]);
if (is_array($jsonDecoded)) {
  foreach ($jsonDecoded as $line) {
    if (is_array($line)) {
      $data = array_map(function($content) {
        $dom = new DOMDocument();
        // 屏蔽HTML不规范的警告
        libxml_use_internal_errors(true);
        $dom->loadHTML('<?xml encoding="UTF-8">' . $content);
        libxml_clear_errors();
        $xpath = new DOMXPath($dom);
        $links = $xpath->query('//a');
        // 替换所有a标签为href值
        foreach ($links as $link) {
          $href = $link->getAttribute('href');
          $link->parentNode->replaceChild($dom->createTextNode($href), $link);
        }
        // 返回纯文本内容
        return trim(strip_tags($dom->saveHTML()));
      }, $line);
      fputcsv($fh,$data);
    }
  }
}
fclose($fh);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:06:01