php成对标签多行匹配,大家正则一般应该怎么写?

mingfish 2010-07-09 10:08:09
成对标签多行匹配,大家正则一般应该怎么写?
#<script[^>]*>.*</script>#isU这样吗?
U模式和.*搞得我一个头两个大


<script type="text/javascript">
............
</script>
<div class="test">
<!-- 内部无div -->
..........
</div>
<script type="text/javascript">
............
</script>
<div class="test">
<!-- 内部无div -->
..........
</div>


...全文
131 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
amani11 2010-07-09
先把src="#####",的#####匹配出来

根据本页面的相对目录,或者是绝对网址,file_get_contents,将内容读取了,再分析
回复
jianglin28290 2010-07-09
比如我匹配到src里的js
这个没有办法匹配里面的内容呀,这个只能匹配页面上已经有的东西
回复
mingfish 2010-07-09

<script type="text/javascript">
document.write("<div>这里是广告区域</div>");
</script>
<script type="text/javascript">
function hello(){
var a=1;
}
</script>
<script src='http://dcdv1.it.com.cn/adsunion/get/;pl=pl-9-homepage_bp;tp=js;sk=0;ck=0;/?'></script>
<SCRIPT src='http://dcdv1.it.com.cn/adsunion/get/;pl=pl-9-homepage_qp;tp=js;sk=0;ck=0;/?'></SCRIPT>
<script src='http://dcdv1.it.com.cn/adsunion/get/;pl=pl-9-homepage_top;tp=js;sk=0;ck=0;/?'></script>
<div class="test">
"hello";
</div>
<script type="text/javascript" src="good.js"></script>
<!--
怎样匹配出所有js代码?
1.含有src="*.js";(没有.js的多是广告js)
2.内部第一行是document.write的不要 (这类多是广告js)
-->
回复
CunningBoy 2010-07-09
<?php
$string = <<<CONT
<script type="text/javascript">
............
</script>
<div class="test">
<!-- 内部无div -->
..........
</div>
<script type="text/javascript">
............
</script>
<div class="test">
<!-- 内部无div -->
..........
</div>
CONT;

preg_match_all('#<script[^>]*>.*</script>#isU', $string, $match);
print_r($match);
?>

没有问题啊
回复
床上等您 2010-07-09
只是匹配 <script 而己

preg_match_all('/<script.*>([\d\D]*)<\/script>/i',$string,$matches);
var_dump($matches);
回复
an9ryfr09 2010-07-09
你这个成对标签还没有嵌套,还不用使用平衡组来处理。
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告