首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 自定義函數:高效清除 HTML、JS、CSS 與實體字符

     編輯:PHP 相關知識

功能說明

這個自定義函數可徹底移除字串中的 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);
?>

關鍵點解析

  • s 模式修飾符:讓 . 匹配換行符,實現跨行匹配
  • i 模式修飾符:大小寫不敏感
  • e 模式修飾符:將替換字串作為 PHP 代碼執行(用於數字實體轉換)
  • @ 分隔符:避免正則中大量 / 需轉義

應用場景

  • 搜尋引擎關鍵詞提取
  • 用戶提交內容安全過濾
  • RSS/Feed 內容純文本轉換
  • 資料清洗預處理

⚠️ 注意:PHP 7.2+ 棄用 /e 修飾符,建議改用 preg_replace_callback() 實現數字實體轉換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved