正则表达式最后的s的用处

我们有时候会用到点号(.)来匹配除换行符 \n 之外的任何单字符。此时如果字符串中有换行符自然就匹配不到,其实也没必要在表达式中加换行,只需要在最后面加s就行了,此时点号(.)的匹配就包括换行符了。

$str = "<records>
		    <record>
			    <bookrecno>27249</bookrecno>
			    <callno><![CDATA[I313.45/102]]></callno>
		    </record>
    		<record>
    			<bookrecno>275276</bookrecno>
    			<callno><![CDATA[I313.45/843]]></callno>
    		</record>
    		<record>
    			<bookrecno>18231</bookrecno>
    			<callno><![CDATA[I313.45/3]]></callno>
    		</record>
   		</records>";

preg_match_all("/\<record\>(.*?)<\/record>/s", $str, $arr);
print_r($arr);

输出
Array
(
    [0] => Array
        (
            [0] => <record>
				    <bookrecno>27249</bookrecno>
				    <callno><![CDATA[I313.45/102]]></callno>
			    </record>
            [1] => <record>
	    			<bookrecno>275276</bookrecno>
	    			<callno><![CDATA[I313.45/843]]></callno>
	    		</record>
            [2] => <record>
	    			<bookrecno>18231</bookrecno>
	    			<callno><![CDATA[I313.45/3]]></callno>
	    		</record>
        )

    [1] => Array
        (
            [0] => 
				    <bookrecno>27249</bookrecno>
				    <callno><![CDATA[I313.45/102]]></callno>
			    
            [1] => 
	    			<bookrecno>275276</bookrecno>
	    			<callno><![CDATA[I313.45/843]]></callno>
	    		
            [2] => 
	    			<bookrecno>18231</bookrecno>
	    			<callno><![CDATA[I313.45/3]]></callno>
	    		
        )

)

如果不带最后的s,就什么也匹配不到。

当然如果你的表达式中根本就没点号(.),那么加不加s都一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值