首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP删除JavaScript

PHP删除JavaScript
EN

Stack Overflow用户
提问于 2009-12-11 17:02:36
回答 8查看 51.5K关注 0票数 21

我正在尝试从超文本标记语言中删除JavaScript。

我不能让正则表达式在PHP中工作;它给了我一个空数组。为什么?

代码语言:javascript
复制
<?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);

   }    
?>
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-12-11 17:26:04

这应该可以做到:

代码语言:javascript
复制
echo preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $var);

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

这只是一个警告,您不应该使用这种类型的regexp来清理网站的用户输入。有太多的方法可以绕过它。对于清理,使用类似于http://htmlpurifier.org/库的东西

票数 65
EN

Stack Overflow用户

发布于 2009-12-11 17:21:45

这可能会超出您的期望,但根据您的情况,您可能希望查看strip_tags

票数 3
EN

Stack Overflow用户

发布于 2009-12-12 05:44:23

我有个想法

代码语言:javascript
复制
while (true) {
  if ($beginning = strpos($var,"<script")) {
    $stringLength = (strpos($var,"</script>") + strlen("</script>")) - $beginning;
    substr_replace($var, "", $beginning, $stringLength);
  } else {
    break
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1886740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档