Для быстрого, грязного и небезопасного решения вы можете установить на сервере node и позвонить exec()
PHP для проверки кода.
Из документации, Exec определяется как:
string exec (string $command [, array &$output [, int &$return_var ]])
и с узлом, мы можем оценить строку JavaScript путем использования -e
флага. Пример использования командной строки:
> node -e 'invalid javascript'
SyntaxError: Unexpected identifier
> $?
-bash: 8: command not found # <-- return status!
Связывание вместе с Exec РНР, вы могли бы иметь что-то вроде этого:
<? php
$userJavaScript = getUserJavaScriptSomehow();
exec("node -e '" + $userJavaScript + "'", $output, $return_var);
if ($return_var !== 0) {
// something went wrong with parsing it.
}
?>
Заметьте, что это ужасное решение. Вам лучше проверить JavaScript на стороне клиента и забыть делать валидацию на стороне сервера все вместе, учитывая, что пользователь может выполнить любой произвольный код. Вам нужно будет защититься от доступа к файлам, бесконечных циклов и т. Д.
Какую проверку вы хотите достичь? Вы можете вытащить целое через JavaScript eval, возможно, в качестве первой оценки синтаксической корректности. – mvw
@mvw Проверка синтаксиса, я думаю, я хочу убедиться, что когда этот объект используется insinde JavaScript, это не приведет к ошибке. Да, я могу использовать eval и поймать исключение, но мне нужен метод проверки php, проверка должна быть внутри php. – keepwalking
, возможно, посмотрите на http://stackoverflow.com/questions/6473473/where-can-i-find-the-jslint-js-validation-parser-written-in-php –