Выглядит коряво, но работает :) Помогли уроки программирования на паскале :D
Правда, с нецелыми степенями не пробовал запускать :P
function pow_extended($base, $st) {
$a[0]=1;
for ($i=0; $i<$st; $i++) {
$count=count($a);
for ($k=0; $k<$count; $k++) {
$a[$k]*=$base;
}
for ($k=0; $k<$count; $k++) {
if ($a[$k]>=10) {
$a[$k+1]+=(int)($a[$k]/10);
$a[$k]%=10;
}
}
}
return implode("", array_reverse($a));
}
print pow_extended(2, 333);