2

これは私が今試していることです:

PHP

shell_exec('node bin/gfm.js '.escapeshellarg($code))

Node.js

console.log(process.argv[2]);

しかし、 Node はの最初のしか受け取っていないよう$codeに見えるため、escapeshellargは改行を正しくエスケープしていないようです。

他にどうすればこれを行うことができますか? それが簡単なら使ってもいいのですstdinが、PHP側もNode側も複雑に見えます。

4

1 に答える 1

2

ちょっといじりましたが、私はそれを手に入れたと思います:

PHP

$spec = array(
    0 => array("pipe", 'r'),  
    1 => array("pipe", 'w'), 
);

$proc = proc_open('node bin/gfm.js', $spec, $pipes);
fwrite($pipes[0], $code);
fclose($pipes[0]);
$resp = stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($proc);

echo $resp;

Node.js

var fs = require('fs');

var size = fs.fstatSync(process.stdin.fd).size;
var buffer = size > 0 ? fs.readSync(process.stdin.fd, size)[0] : '';

console.log(buffer);

クレジット:シグムント

于 2013-10-26T20:30:49.737 に答える