$preg = "//i"; // 無法匹配跨行 JS,因 . 不匹配換行符
$preg = "/
$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)或模板引擎自動轉義。