$max) { $max = $cur; $b = $i + 1; $n = 0; } } else if ($str[$i] == $r) { $cur--; } else { if ($cur == $max) { $n++; } } } return array($b, $n); } function eqn_replace($e) { $e = preg_replace("/[\(\[]/", '$0', $e); $e = preg_replace("/[\)\]]/", '$0', $e); $e = preg_replace("/\^(.*?)\^/", '$1', $e); $e = preg_replace("/_(.*?)_/", '$1', $e); $e = preg_replace("/(\&\w*?;)/", '$1', $e); // remove $e = preg_replace("/<(\w+)><\/\\1>/", "", $e); return $e; } function eqn_repl($e) { $bn = string_deepest($e, '{', '}'); while ($bn[0] != 0) { $b = $bn[0]; $n = $bn[1]; $r = eqn_replace(substr($e, $b, $n)); // replace {$r} $b -= 1; $n += 2; $e = substr_replace($e, $r, $b, $n); $bn = string_deepest($e, '{', '}'); } // top level replace $e = eqn_replace($e); return $e; } function eqn_html($equation) { return '' . eqn_repl($equation[1]) . ''; } function eqn_math($content) { $regex = '#\[math\] *(.*?)\[/math\]#si'; return preg_replace_callback($regex, 'eqn_html', $content); } add_filter('the_content', 'eqn_math', 1); ?>