使用strip_tags功能时保留文件链接

keep file links while using strip_tags function

提问人:IDI 提问时间:8/28/2021 最后编辑:IDI 更新时间:8/29/2021 访问量:160

问:

我正在使用 PHP 将 JSON 数据转换为没有 HTML 标签的 excel 文件。一切正常,但某些字段 [ex:field_hcpg] 包含链接,并且已被删除。下面我尝试删除除链接之外的所有 HTML 标签,但没有运气。 请告知如何解决此问题。

下面的代码移动所有 HTML 标签

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( 'strip_tags', $line);
  fputcsv($fh,$data);
}
  }
}
fclose($fh);

这个脚本是我尝试只保留链接

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( 'strip_tags', $line, ['<a>']);
  $data = preg_replace('~<a href="(https?://[^"]+)".*?>.*?</a>~', '$1', $data);
  $data = preg_replace('~<a href="(?!https?://)[^"]+">(.*?)</a>~', '$1', $data);
  fputcsv($fh,$data);
}
  }
}

最后一个脚本的结果是,这是错误的,因为我需要显示 href 标签中的文件 url

filename.pdf
php strip-tags

评论

2赞 AbsoluteBeginner 8/28/2021
strip_tags($string,'<a>');
0赞 Hermann Schwarz 8/22/2022
为什么不做这项工作?strip_tags($string,'<a>')

答:

0赞 GUEST 8/29/2021 #1

要从您的行看起来是数组的数组中去除标签,但保留锚点,您可以尝试

$data = array_map('strip_tags',$line,array_fill(0,count($line),'<a>'));

示例假设您的行是类似于以下内容的数组

array (
  0 => '<b><a href="#">text</a></b>',
  1 => '<b><a href="#">text</a></b>',
  2 => '<b><a href="#">text</a></b>',
)

输出

Array
(
  [0] => <a href="#">text</a>
  [1] => <a href="#">text</a>
  [2] => <a href="#">text</a>
)