我已经看到了这个问题similar ques for SQL
我将网页内容作为c ++程序的参数传递。
我的代码在这里:
<?php
//sent has value "http://www.paulgraham.com/herd.html"
$url=$_POST['sent'];
$text = file_get_contents($url);
$temp=strip_tags($text);
$output=shell_exec("/home/technoworld/Videos/LinSocket/Modular/x '$temp'");
echo $output;
?>
仅为小内容提供输出。我得到的输出是
most : 1 in : 1 investors : 1 component : 1 2013The : 1 biggest : 1 August : 1 Dynamics : 1 Herd : 1 Investor : 1 Maximum Occurrences Investor Herd Dynamics August 2013The biggest component in most investors
实际上它显示了每个单词的计数。
在命令行中执行程序时手动:
./x "string"
它可以为“http://www.paulgraham.com/herd.html”的第一段提供正确的结果 。但是它没有在论证中传递第二个和下一个para内容。它只是在命令行上写它。
我怎样才能在论证中传递这样的内容?对于小内容,它可以提供正确的输出。
getconf ARG_MAX
我的系统允许的参数列表是:2097152
答案 0 :(得分:1)
您可以修改C ++和PHP源并构建管道。
C ++
int main () {
std::ostringstream txt;
txt << std::cin.rdbuf();
std::cout << "Input: \n" << txt.str() << std::endl;
return 0;
}
PHP
<?php
$pipe = popen('Debug/Test', 'w');
if( ! $pipe) {
// Error
}
else {
$txt = 'Hello World';
fwrite($pipe, $txt, strlen($txt));
pclose($pipe);
}
?>
答案 1 :(得分:1)
我已将PHP程序更改为使用escapeshellarg
,如下所示。我没有测试它,但我的猜测是它会起作用
<?php
//sent has value "http://www.paulgraham.com/herd.html"
$url=$_POST['sent'];
$text = file_get_contents($url);
$temp=escapeshellarg(strip_tags($text));
$output=shell_exec("/home/technoworld/Videos/LinSocket/Modular/x " . $temp);
echo $output;
?>