У меня была аналогичная проблема, но в моем случае решение было другим. мой файл, который содержал php-код, назывался «somename.html», изменил его на «somename.php», работал отлично
Если ваши выражения состоят только из круглых скобок, значений (констант и / или идентификаторов) и префикса, постфикса и инфиксных операторов, тогда есть два условия, которые необходимо проверить:
PRE* VAL POST* ( INFIX PRE* VAL POST* )*
, где PRE
является префиксным оператором или (POST
является постфиксным оператором или a) VAL
является значением: константа или идентификатор . Это фактически сводится к двухпозиционному конечный автомат: начальное состояние (состояние 0) можно назвать «ожидающим значением», а другое состояние (состояние 1) можно назвать «ожидающим оператором». Только состояние 1 принимает, а переходы следующие:
State 0:
PRE → State 0
VAL → State 1
State 1:
POST → State 1
INFIX → State 0
Все остальные переходы относятся к ошибке.
Часто необходимо реализовать этот конечный автомат, чтобы правильно иметь дело с унарным минусом (и другими операторами, которые могут быть префиксами или инфиксами), и в любом случае очень просто интегрироваться в обработку ввода.