2017-11-24 18 views
1

PHP exec()を使用してC++関数に渡そうとしているbase64イメージ文字列があります。しかし、文字列の中にスペースがあると、exec()は機能しません。PHP exec()を使用してテキスト文字列を送信

$data="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAImCAMAAACSFogBAAAAAXNSR0IArs4c"; 
list($type, $data) = explode(';', $data); 
list(, $data)  = explode(',', $data); 
exec('./hello'.$data, $out,$return); 
if(!$return) 
{ 
echo 'created'; 
} 

else 
{ 
echo 'not created'; 
} 
+0

'' ./hello '。$ data'の間に空白がない場合、大量のファイル名だけをパラメータとして渡すことはありません。代わりに 'str_replace( 'data:image/png; base64、'、 ''、$ str)だけでなく、なぜですか? –

+0

したがって、exec行を変更してください。 'exec(" ./ hello $ data "、$ out、$ return);' helloの後のスペースに注意してください。 – Nic3500

+0

あなたの質問は何ですか? $ dataの中にスペースがあればどうなりますか? – Nic3500

答えて

0

使用してみてください:だけではなく、execメソッドの

$data = str_replace(" ", "\ ", $data); 
exec('"./hello'.$data.'"', $out, $return); 

を。

P .:すべてのコマンドが二重引用符で囲まれている場合、置換が必要かどうかはわかりません。

関連する問題