博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【PHP】用正则表达式过滤js代码(注意这个分析过程)
阅读量:6226 次
发布时间:2019-06-21

本文共 918 字,大约阅读时间需要 3 分钟。

hot3.png

我想用正则过滤JS里代码,但是总是写不好!

比如 <script>function tt () {xffdfdfdfdfd}</script>

把所有的

<script>function tt () {xffdfdfdfdfd}</script>
都删除掉

1 <?php
2     $html ='777444553sdg<script>function tt () {xffdfdfdfdfd}</script>gsgsdasdaad124';
3     $search ="/<script[^>]*?>.*?<\/script>/si";
4     $rr = preg_replace($search,' ',$html);
5     echo $rr;
6 ?>

 正则表达式代码:

 /<script[^>]*?>.*?<\/script>/si

 

正则表达式教程:(你只想要结果,以下内容可以不用看了)

 其实这个正则很简单

为了匹配<script>。。</script>内容我第一时间就想到这样写

/<script>.+<\/script>/si

相信刚刚接触正则的都会这样写。

因为正则的贪婪性。会导致这样的字符串也会被匹配,

如: <script>……a……</script>……<div>……</div>……<script>……b……</script>

 

后面我这样写

/<script>.*?<\/script>/si

已经可以匹配了。

还有遗漏,就是 <script type="text/javascript" >这种情况没有考虑

 

后来看了PHP手册才知道还要这样写

/<script[^>]*?>.*?<\/script>/si

 

[^>]*?

是什么意思呢?

[^>] 是对>取反,也就是说,取一个字符不为">" 的字符

*?就是取0次到无限次。

整个来说是: 取0个到无限个不为“>”的字符。

对于以上例子是匹配 <script type="text/javascript" >部分

 

本人能力不足只解释到这里了。有关回溯的问题以后再讨论了。

 

转载于:https://my.oschina.net/qiujumper/blog/75071

你可能感兴趣的文章
Bitmap压缩到指定尺寸大小,获取圆角、圆形图片
查看>>
解决:模态框中使用select2下拉选项无法搜索
查看>>
LeetCode OJ:Min Stack(最小栈问题)
查看>>
什么是FPGA,PAL,EPLD?
查看>>
OO第一次博客作业
查看>>
计算机发展史简述
查看>>
wpf 遍历控件及其值
查看>>
Unity5.6.4f1 配置WebGL教程
查看>>
linux -硬盘分区
查看>>
Struts1防止重复提交
查看>>
JS控制滚动条的位置
查看>>
来自我的破船大大的博客,记录他的iOS成长之路,与君同勉!
查看>>
GridView 编辑、删除 、分页
查看>>
[洛谷P2742]【模板】二维凸包([USACO5.1]圈奶牛Fencing the Cows)
查看>>
C/C++动态二维数组的内存分配和释放
查看>>
HTC G7 官方ROM卡刷包(国行、台版、港版、印度、亚太版、欧版)
查看>>
jQuery笔记(五)jQuery表单验证
查看>>
编程助手JavaScript学习库-面向对象编程笔记
查看>>
聪明的数据结构和笨拙的逻辑代码
查看>>
php_memcache 缓存 下载-安装-配置-学习
查看>>