<?php
function evalJS($code)
{
$matches = [];
preg_match_all('#var (.*)( |=|;)#', $code, $matches);
foreach($matches[1] as $val)
{
$code = preg_replace('#'.$val.'#', '\$'.$val, $code);
$code = preg_replace('#var \$'.$val.'#', '\$'.$val, $code);
$code = preg_replace('#\$'.$val.'\.#', '\$'.$val.'->', $code);
}
$code = preg_replace('#\.#', '::', $code);
$code = preg_replace('#(\'|")\+#', '$1.', $code);
$code = preg_replace('#\+(\'|")#', '.$1', $code);
echo($code);
}
class document
{
public function print($arg)
{
echo($arg);
}
}
$js = <<<JS
var foo = 'Hello '+'World!';
document.print(foo);
JS;
evalJS($js);
preferences:
45.6 ms | 402 KiB | 5 Q