正则表达式边界符妙用

在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>中有 / ,所以程序会认为这个正则表达式已经结束,其实后面还有代码,所以为出错。 

总之,其边界符虽然可以比较随意的使用,没有固定的限制,但是还是得多多注意,有时候随意不得。

29
Feb 2012
AUTHOR WiFeng
CATEGORY Web
COMMENTS 1 Comment

仅有一条评论 »

  1. wer wer

    Hello, l am from Android.

添加新评论 »

   点击刷新验证码