2016-04-27 3 views
0

1) В пользователя PHP входят: запрос как '%key%' или запрос как '%door%'Как передать специальный символ в perl-скрипт?

2) Я звоню PERL скрипт как

ob_start(); 
passthru("perl -w search.pl 'query'); 

3) В Perl, если я печатать

print "query: $ARGV[0]\n"; 

4) Он печатает как запрос, например ^m'%key%'^M или запрос типа ^m'%door%'^M

Любые предложения для печати в качестве введенного пользователем значения.

+1

Вы пытались распечатать запрос внутри php-скрипта, правильно ли он печатается? Вы поняли, что вам не хватает двойной кавычки? 'passthru (" perl -w search.pl 'query'HERE); ' –

ответ

0

Вам не хватает замыкания с двойной цитатой на команде passthru.
Я думаю, что вам нужно escapeshellarg(), то есть:

$query = escapeshellarg("'%key%'"); 
shell_exec("perl -w search.pl '$query' "); 

escapeshellarg() 

escapeshellarg() добавляет одинарные кавычки вокруг строки и кавычки/сбегает любые существующие одиночные кавычки позволяет передавать строку непосредственно к функции оболочки и ее следует рассматривать как один безопасный аргумент. Эта функция должна использоваться для исключения отдельных аргументов в оболочку функции, поступающие с пользовательского ввода. Функции оболочки включают в себя функцию exec(), () и оператору обратной связи.

+0

1) Пользователь вводит текстовое поле как целое текст запрос типа'% key% 'или запрос типа'% door% ' 2) in PHP $ запрос = $ _POST [ 'TextArea']; $ query_pass = escapeshellarg (" '$ запрос'"); 3) жаль об опечатке (я уже в конце ") меня PassThru (" perl -w search.pl query_pass "); 4) когда я беру perl-вывод, он выглядит так: «запрос: $ ARGV [0] \ n"; «запрос как '% ключ% ' или запрос как '% дверь% '» – Newbie2Bootstrap

+1

@ Newbie2Bootstrap, если есть проблема с вашим вопросом, редактировать свой вопрос, а не проводки (одинаково плохо) исправить в комментариях. Кроме того, отправляйте код, который вы на самом деле запускаете, а не заставляете его заполнять. Дважды. – ikegami

Смежные вопросы