- array_pop: documentation ( source)
- str_split: documentation ( source)
<?php
function Parenthesis($string) {
$opening = array('}' => '{', ']' => '[', ')' => '(');
$parens = array();
foreach (str_split($string) as $char) {
switch ($char) {
case '{':
case '[':
case '(':
$parens[] = $char;
break;
case '}':
case ']':
case ')':
if (!count($parens) || array_pop($parens) != $opening[$char]) return false;
break;
default:
break;
}
}
return count($parens) === 0;
}
function check_balanced($string) {
echo "$string is " . (Parenthesis($string) ? '' : 'not ') . "balanced\n";
}
check_balanced("{([]){}()}");
check_balanced("{C{}[{[a]}RqhL]{y2}}");
check_balanced("{([]){]()}");