PHP Remove JavaScript

2022-08-30 18:45:20

我正在尝试从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);

   }    
?>

答案 1

这应该这样做:

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

/s 是这样的点 。也匹配换行符。

只是一个警告,您不应该使用这种类型的正则表达式来清理网站的用户输入。有太多的方法可以绕过它。为了进行消毒,请使用 http://htmlpurifier.org/ 库之类的东西


答案 2

这可能比您想要的要多,但根据您的情况,您可能需要查看strip_tags