提问人:IDI 提问时间:8/28/2021 最后编辑:IDI 更新时间:8/29/2021 访问量:160
使用strip_tags功能时保留文件链接
keep file links while using strip_tags function
问:
我正在使用 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
答:
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>
)
评论
strip_tags($string,'<a>');
strip_tags($string,'<a>')