$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);
?>