這個自定義函數可徹底移除字串中的 JavaScript、CSS、HTML 標籤、註釋、空白字符,並將常見 HTML 實體轉換為對應字符,適合用於內容過濾、關鍵詞提取或安全處理。
<?php
function stripAllTags($document) {
// 正則模式陣列
$search = array(
// 移除 JavaScript
'@<script[^>]*?>.*?</script>@si',
// 移除 CSS
'@<style[^>]*?>.*?</style>@si',
// 移除 HTML 標籤
'@<[/!]*?[^<>]*?>@si',
// 移除 HTML 註釋
'@<!--[^>]*?-->@si',
// 移除空白字符
'@([\r\n])[\s]+@',
// HTML 實體轉換
'@&(quot|#34);@i', // "
'@&(amp|#38);@i', // &
'@&(lt|#60);@i', // <
'@&(gt|#62);@i', // >
'@&(nbsp|#160);@i', // 空格
'@&(iexcl|#161);@i', // ¡
'@&(cent|#162);@i', // ¢
'@&(pound|#163);@i', // £
'@&(copy|#169);@i', // ©
'@&#(\d+);@e' // 數字實體
);
// 替換對應值
$replace = array(
'', '', '', '', '', // 前五項替換為空
'"', '&', '<', '>', ' ', // 實體轉換
chr(161), chr(162), chr(163), chr(169),
'chr(\1)' // 數字實體動態轉換
);
// 執行替換
$out = preg_replace($search, $replace, $document);
return $out;
}
// 使用範例
$html = file_get_contents('https://example.com');
echo stripAllTags($html);
?>
. 匹配換行符,實現跨行匹配/ 需轉義⚠️ 注意:PHP 7.2+ 棄用 /e 修飾符,建議改用 preg_replace_callback() 實現數字實體轉換。