在学习PHP正则表达式时,测试了老外写的一本书中的代码,我以中文字符串作为正则表达式的模式进行测试,发现当正则表达式的模式为中文时会出现问题(多次点击测试按钮,浏览器会运行得越来越慢,最后PHP报错)。我不清楚其中的缘由,感兴趣可以尝试一下。代码和运行结果截图如下:
<html>
<head><meta http-equiv='Content-Type' content='text/html;charset=utf-8' /></head>
<body>
<?php
/**
* 测试正则表达式的使用
*/
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//处理提交的表单中的内容
$pattern = trim($_POST['pattern']);
$subject = trim($_POST['subject']);
echo '模式匹配的结果是:';
if(preg_match($pattern,$subject)){
echo '匹配成功';
}else{
echo '匹配失败';
}
}
?>
<form action='pcre.php' method='post'>
<p>正则表达式模式(包含模式分隔符):
<input type='text' name='pattern' value='<?php if(isset($pattern)) echo htmlentities($pattern);?>' size='40' />
</p>
<p>被测试的字符串:
<input type='text' name='subject' value='<?php if(isset($subject)) echo htmlentities($subject);?>' size='40'/>
</p>
<input type='submit' name='submit' value='测试' />
</form>
</body>
</html>
运行的结果截图如下(查看顺序为photo1~6):