используйте переменные php для команд регулярного выражения awk

пытаясь реализовать autosuggest с помощью php. список автозаполнения, созданный с помощью awk

    $input= $_GET["term"];
$suggest=array();
exec('awk \'BEGIN{FS=","}/.$input./{print $2,"-cost-",$1}\' 3.txt',$suggest);
echo json_encode($suggest)

вместо $ input для проверки autosuggest я использовал charachrecter, например, A, работает отлично. Однако я не могу принять динамический символ в качестве входа в awk. что-то не так с. $ input. не могу понять, как написать escape-символы

заранее спасибо

0

Решение

Очередь

exec('awk \'BEGIN{FS=","}/.$input./{print $2,"-cost-",$1}\' 3.txt',$suggest);

В:

exec('awk \'BEGIN{FS=","}/'.$input.'/{print $2,"-cost-",$1}\' 3.txt',$suggest);

Вы забыли прекратить первый ', что необходимо, поскольку вы не можете раскрывать переменные внутри строк в одинарных кавычках.

Примечание: как указано в комментариях, вы можете дважды подумать о слепом принятии GET параметры как команды оболочки, без какой-либо проверки безопасности. Пользователи могут и быстро найдут способ использовать этот недостаток …

1

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

Других решений пока нет …