長い文字列を含む変数があります。(具体的には、数キロバイトの JavaScript コードが含まれています)
この文字列を外部コマンド (この場合は javascript-compressor) に渡し、外部コマンド (圧縮された JavaScript) の出力を php でキャプチャして、変数に割り当てたいと考えています。
PHP に JavaScript を圧縮するためのクラスがあることは承知していますが、これは一般的な問題の一例にすぎません。
もともと使用していたもの:
$newvar = passthru("echo $oldvar | compressor");
これは小さな文字列に対して機能しますが、安全ではありません。(oldvar にシェルにとって特別な意味を持つ文字が含まれている場合、何かが起こる可能性があります)
escapeshellarg でエスケープするとそれが修正されますが、最大許容引数長に対する OS の制限により、解決策はより長い文字列に対して壊れます。
コマンドを使用して書き込もうとしpopen("command" "w")
ました-これは機能しますが、コマンドからの出力は静かに無効になります。
概念的には、次のことと同等のことをしたいだけです:
$newvar = external_command($oldvar);