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

PHP 正則過濾 JS 腳本標籤:跨行匹配關鍵點 [\s\S]*? 非貪婪模式

     編輯:PHP 綜合知識

錯誤寫法

$preg = "//i"; // 無法匹配跨行 JS,因 . 不匹配換行符

正確寫法

$preg = "//i"; // [\s\S] 匹配任意字符含換行,*? 非貪婪匹配最近 

完整演示

$str = '<script src="dd.js"></script>
測試內容
<script>var aa="sdsds"; alert(aa);</script>
更多內容';

$preg = "/<script[\s\S]*?<\/script>/i";
$clean = preg_replace($preg, '', $str, 3); // 第4參數 limit=3 僅替換前3處
echo $clean;

關鍵點解析

  • [\s\S] = 空白字符 + 非空白字符 = **任意字符**(包含換行),等同 . 加 s 修飾符 /.../is。
  • *? 非貪婪:匹配**最近**的 </script>,避免吞掉中間多個 script 標籤。
  • preg_replace 第四參數 limit 可限制替換次數。

安全提示

正則過濾 HTML/JS **不可作為唯一 XSS 防禦**,繞過手法極多(編碼、事件屬性、CSS expression 等)。務必使用成熟庫(HTMLPurifier)或模板引擎自動轉義。

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