mysql — использование функции внутри eval () в переполнении стека

$answra[$j] = '$qry['.$answers[$j].']';
eval("echo stripSlashes($answra[$j]); ");

Я пробовал разные методы, но я не могу получить eval (), чтобы вывести вывод. Я проследовал за соответствующим сообщением и получил это, но это не просто работало.

$str = "echo (stripSlashes($answra[$j])) ;" ;
eval("?> $str <?php ");

Любая более простая альтернатива?

-1

Решение

(Я предполагаю, что у вас есть причины использовать eval, что в любом случае не рекомендуется, позвольте мне дать вам мое решение)

Хорошо, давайте это неправильно пример:

$string = "asdfg";
eval("echo stripSlashes($string); ");

это не будет работать, потому что используемая строка в

eval("echo stripSlashes($string); ");

результаты в

echo stripSlashes(asdfg);

ты можешь видеть asdfg больше не настоящая строка

что вам нужно сделать, это экранировать переменную следующим образом:

eval("echo stripSlashes(\$string); ");

поэтому ваш переводчик будет знать, что не следует принимать во внимание переменную.

TL; DR:

этот обратный слеш должен сделать свое дело:

$answra[$j] = '$qry['.$answers[$j].']';
eval("echo stripSlashes(\$answra[$j]); ");
1

Другие решения

Используйте одинарные кавычки вместо двойных, чтобы не допустить раскрытия переменной, когда она включена в строку. Это будет расширено eval когда он разбирает аргумент.

eval('echo stripSlashes($answra[$j]); ');
0

По вопросам рекламы [email protected]