切换风格

Wizard Sky California Sunset glow Black Cloud Beige Dragon Lavender NewYear City Snow Flowers London
收藏本站XSS平台字符串转换jsfuck
步步精通正则表达式第三课:正则表达式---不缓存模式及正则注释规则[复制链接]
发表于 2013-5-20 00:20:31 | 显示全部楼层 |!read_mode!


1,关于不缓存模式:
<?php
$str = <<<str
	<html>
	<body>
		<h1>3G-SecTeam--->[url]http://www.3g-sec.com/</h1>[/url]
		<h2>3G-SecTeam--->[url]http://bbs.3g-sec.com/</h2>[/url]
		<h1>3G-SecTeam--->[url]http://www.3g-sec.net/</h1>[/url]
		<h2>3G-SecTeam--->[url]http://bbs.3g-sec.net/</h2>[/url]
	</body>
	</html
str;
$preg = '/(www|bbs)\.3g-sec\.com/';
//()是分组的意思,会把里面规则的匹配值放到数组的字段中,也就是缓存起来
//缓存的东西东西通过上节课讲的\1或\2一直到\99可以取出来
preg_match_all($preg,$str,$arr,PREG_SET_ORDER);
echo "<pre>";
print_r($arr);
echo "</pre>";
echo "<hr>";
/**
Array
(
    [0] => Array
        (
            [0] => [url]www.3g-sec.com[/url]
            [1] => www
        )

    [1] => Array
        (
            [0] => bbs.3g-sec.com
            [1] => bbs
        )

)
***/

//但是如果一个正则中的分组比较多,都缓存起来是没什么意义的,怎么不缓存?
//在分组规则前添加?:
$preg = '/(?:www|bbs)\.3g-sec\.(com|net)/';//只缓存第二个分组
preg_match_all($preg,$str,$arr,PREG_SET_ORDER);
echo "<pre>";
print_r($arr);
echo "</pre>";
echo "<hr>";
/***
Array
(
    [0] => Array
        (
            [0] => [url]www.3g-sec.com[/url]
            [1] => com
        )

    [1] => Array
        (
            [0] => bbs.3g-sec.com
            [1] => com
        )

    [2] => Array
        (
            [0] => [url]www.3g-sec.net[/url]
            [1] => net
        )

    [3] => Array
        (
            [0] => bbs.3g-sec.net
            [1] => net
        )

)
***/
?>


2,关于正则表达式注释:
(?#注释语句)
<?php
$preg='/<(h\d{1})>(?#匹配html标签头).*?<\/(\1)>(?#匹配html标签尾)/';
preg_match_all($preg,$str,$arr,PREG_SET_ORDER);
echo "<pre>";
print_r($arr);
echo "</pre>";
echo "<hr>";
?>



该贴已经同步到 抚菊深思的微博
附件: 你需要登录才可以下载或查看附件。没有帐号?加入Team
操千曲而后晓声,观千剑而后识器。
发表于 2013-5-20 10:05:23 | 显示全部楼层
跟着老大一块学习,o(∩∩)o...哈哈

代码区

GMT+8, 2019-11-20 00:17

Powered by Discuz! X2

© 2001-2018 Comsenz Inc.

回顶部