正则表达式如何剔除两个字符之间的内容

内容如下:顺风顺水分公司孤独感4545dgdfgdgdgwrwerewre你好<scriptlanguage=javascript>中间是若干JS代码</script>s... 内容如下:
顺风顺水分公司孤独感4545dgdfgdgdg wrwerewre你好 <script language=javascript>中间是若干JS代码</script>
ssfsfs额恶搞个大范甘迪123124大范甘迪
现在我需要从上面内容中剔除掉<script language=javascript>和</script>之间的内容,只获得如下内容
顺风顺水分公司孤独感4545dgdfgdgdg wrwerewre你好
ssfsfs额恶搞个大范甘迪123124大范甘迪
那么用php的preg_match的正则应该怎么写,回答正确,加分
感谢1楼的回答,但是strip_tags根本去不了<script>和</script>之间的内容

问题已经解决了,可以用preg_replace函数替换掉他们之间的内容,一直想着match忘了这个,呵呵
下面这个正则就可以
$result=preg_replace('/<script.*?>.*?<\/script>/is',"",$str);
展开
 我来答
百度网友4327fcbb9b
推荐于2016-06-13 · 知道合伙人教育行家
百度网友4327fcbb9b
知道合伙人教育行家
采纳数:26423 获赞数:292071
从师范学校毕业后一直在现在单位工作

向TA提问 私信TA
展开全部
  正则表达式剔除两个字符之间的内容:
  $id="index_nav"; $preg='/id="(.*)"/isU'; preg_match_all($preg,$id, $arr); print_r($arr);

  正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
  许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
喜欢选择的
2010-10-09 · TA获得超过367个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:346万
展开全部
至今我还没有见过能用一个正则完美过滤script标签的.
比如正则
<script[^>]*>.*?<\/script>
可以被
<scr<script>alert(1);</script>ipt>alert(1);</script>
绕过

又比如:
<script[^>]*>[^<>]*<\/script>
可以被
<script>var s="<>"; alert(1);</script>绕过

还是那句老话:正则虽易, 用好却难。

要实现你的功能,最简单的就是php自带函数strip_tags,第二个参数填上你所有允许的标签就OK了。
如果完全想过滤用户的html输入就更简单了, 直接用htmlspecialchars就OK了

-----------------------------------------
再多说几句,防止XSS,并不是禁止掉script标签就安全了的,还有很多很多其他的地方可以做手脚
比如<img src="x" onerror="alert(1);" />
比如style的expression.
-------------------------------------------
to 蛋壳儿漂:
果然有撞枪口的,你试试你的正则能不能过滤掉这个:
<scr<script>alert(1);</script>ipt>alert(1);</script>

to LZ:
为什么需要过滤掉里面的内容?只要让他的内容没有危害就好了啊!
-------------------------------------------

亲爱的楼主,我说过了,正则不是那么好用的,你试试你的正则,会被很轻松的绕过的:
<?php
$str = '<scr<script>alert(1);</script>ipt>alert(1);</script>';
$result=preg_replace('/<script.*?>.*?<\/script>/is',"",$str);
echo $result;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蛋壳儿漂
推荐于2018-03-09 · TA获得超过1160个赞
知道小有建树答主
回答量:433
采纳率:0%
帮助的人:599万
展开全部
$str = "顺风顺水分公司孤独感4545dgdfgdgdg wrwerewre你好 <script language=javascript>中间是若干JS代码</script>
ssfsfs额恶搞个大范甘迪123124大范甘迪
";
$strnew = preg_replace("#<script[^>]*>[\s\S]*?</script>#","",$str);
echo $str;
echo $strnew;
使用的是preg_replace正则替换函数。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式