You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
910 B
38 lines
910 B
<?php |
|
|
|
/** |
|
* This variable parser uses PHP's internal code engine. Because it does |
|
* this, it can represent all inputs; however, it is dangerous and cannot |
|
* be used by users. |
|
*/ |
|
class HTMLPurifier_VarParser_Native extends HTMLPurifier_VarParser |
|
{ |
|
|
|
/** |
|
* @param mixed $var |
|
* @param int $type |
|
* @param bool $allow_null |
|
* @return null|string |
|
*/ |
|
protected function parseImplementation($var, $type, $allow_null) |
|
{ |
|
return $this->evalExpression($var); |
|
} |
|
|
|
/** |
|
* @param string $expr |
|
* @return mixed |
|
* @throws HTMLPurifier_VarParserException |
|
*/ |
|
protected function evalExpression($expr) |
|
{ |
|
$var = null; |
|
$result = eval("\$var = $expr;"); |
|
if ($result === false) { |
|
throw new HTMLPurifier_VarParserException("Fatal error in evaluated code"); |
|
} |
|
return $var; |
|
} |
|
} |
|
|
|
// vim: et sw=4 sts=4
|
|
|