正则表达式边界符妙用
在php中,使用正则表达式,按道理来说,其边界符可以是任意字符,只要前后对应都可以的。通常我们会使用 “/”,但是在特殊情况下,使用这个“/” 就会出问题了,代码如下:<?php $html = "hello<script>alert(123)</script>world"; $str = preg_replace( array( "/<script[^>]*?>.*?</script>/si" ), array( "" ), $html ); var_dump($str); ?>在这样的代码中会出现一个错误:
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'c' in D:\WAMP\www\test\html.php on line 11原因是上面的正则表达式出现异常了,把下面的代码替换就会正常执行
"/<script[^>]*?>.*?</script>/si"
"'<script[^>]*?>.*?</script>'si"
因为在上面代码中的正则表达式里有</script>中有 / ,所以程序会认为这个正则表达式已经结束,其实后面还有代码,所以为出错。
总之,其边界符虽然可以比较随意的使用,没有固定的限制,但是还是得多多注意,有时候随意不得。
Hello, l am from Android.