PHP删除JavaScript

Sax*_*tor 18 javascript php

我试图从HTML中删除JavaScript.

我无法使用正则表达式来使用PHP; 它给了我一个空数组.为什么?

<?php
$var = '
<script type="text/javascript"> 
function selectCode(a) 
{ 
   var e = a.parentNode.parentNode.getElementsByTagName(PRE)[0]; 
   if (window.getSelection) 
   { 
      var s = window.getSelection(); 
       if (s.setBaseAndExtent) 
      { 
         s.setBaseAndExtent(e, 0, e, e.innerText.length - 1); 
      } 
      else 
      { 
         var r = document.createRange(); 
         r.selectNodeContents(e); 
         s.removeAllRanges(); 
         s.addRange(r); 
      } 
   } 
   else if (document.getSelection) 
   { 
      var s = document.getSelection(); 
      var r = document.createRange(); 
      r.selectNodeContents(e); 
      s.removeAllRanges(); 
      s.addRange(r); 
   } 
   else if (document.selection) 
   { 
      var r = document.body.createTextRange(); 
      r.moveToElementText(e); 
      r.select(); 
   } 
} 
</script>
';

   function remove_javascript($java){
   echo preg_replace('/<script\b[^>]*>(.*?)<\/script>/i', "", $java);

   }    
?>
Run Code Online (Sandbox Code Playgroud)

Tjo*_*ras 62

这应该这样做:

echo preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $var);
Run Code Online (Sandbox Code Playgroud)

/ s就是这个点.也匹配换行符.

只是一个警告,你不应该使用这种类型的正则表达式来清理网站的用户输入.解决问题的方法太多了.对于消毒使用类似http://htmlpurifier.org/库的东西

  • 我稍微改变/改进了它(特别是为了匹配标签中的任何可选空格,浏览器也会忽略):`$ html = preg_replace('〜<\ s*\bscript\b [^>]*>(.*?)<\ s*\/\s*script\s*>〜是','',$ html);` (7认同)