">
赞
踩
思路:将字符串内的括号分为前括号和后括号,匹配到前括号则直接存储到数组中,匹配到后括号,则跟之前存储的前括号中最后一个括号进行对比,如果匹配,则删除前括号中的最后一个匹配的括号,如果不匹配,则报错。
- <?php
- header("Content-type:text/html;charset=utf-8");
- $str = '[()()()434()(4232344}(14))]';
- $farr = array('(','[','{');
- $larr = array(')',']','}');
- $tarr = array();
- $res = '';
-
- for ($i = 0;$i < strlen($str);$i++){
- // 如果字母在数组中
- if (in_array($str[$i], $farr)){
- $tarr[] = $str[$i];
- }
-
- if (in_array($str[$i], $larr)){
- $last = end($tarr);
- //如果出现一对括号不匹配则报错
- if (($last == '(' && $str[$i] == ')') || ($last == '[' && $str[$i] == ']') || ($last == '{' && $str[$i] == '}')){
- array_pop($tarr);
- }else{
- $res = $str[$i];
- break;
- }
- }
- }
- if ($tarr || $res){
- echo $str.'<br>';
- echo '括号不匹配<br>错误提示:';
- echo $res?$res:end($tarr);
- }else{
- echo '括号全部匹配';
- }
- // print_r($res);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。