我是把本地的一个html文件读取出来存在一个变量$daiMa里边,
然后用正则表达式
$css_zheng_ze = "/(<body>)(.|\n)*(<\/body>)/";
preg_match_all($css_zheng_ze,$daiMa,$end);
匹配
可是 $end二维数组里边得不到含有body内容的结果啊。
正则表达式
/(<body>)(.*?)(<\/body>)/这个 也不行。
$end[2][0]里边什么都没有啊。
下边是body的代码。
……
</head>
<body>
<div class="warp">
<div class="shirt">
</div>
</div><!--warp-->
</body>
</html>
body内容 不含有<body>标签。
"/(<body>)(.*?)(<\/body>)/"这个其实就比较对了,只是少了点模式修正符号
改成
"/(<body>)(.*?)(<\/body>)/is"
就可以了。
模式修正符号是很重要的。
下边是书上的原话。
s:如果设置了此修正符,模式中的圆点字符“.”匹配所有字符,包括换行符。即将字符串视为单行,换行符看作普通字符看待。
改成
"/(<body>)(.*?)(<\/body>)/is"
就可以了。
模式修正符号是很重要的。
下边是书上的原话。
s:如果设置了此修正符,模式中的圆点字符“.”匹配所有字符,包括换行符。即将字符串视为单行,换行符看作普通字符看待。
参考资料:书。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-04-18
$css_zheng_ze = "/<body>([\s\S]*)<\/body>/Ui";
preg_match_all($css_zheng_ze,$daiMa,$end);
绝对可以
preg_match_all($css_zheng_ze,$daiMa,$end);
绝对可以
第2个回答 2012-04-14
preg_match_all('#<body>(.+?)</body>#is',$daiMa,$end);
第3个回答 2012-04-24
把·替换成[\w\W]就行