2017-11-24 2 views
1

Ich habe eine Base64-Bildzeichenfolge, die ich über PHP exec() an eine C++ - Funktion übergeben möchte. Wenn jedoch Leerzeichen innerhalb einer Zeichenfolge vorhanden sind, funktioniert exec() nicht.Eine Textzeichenfolge über PHP senden 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

Wenn zwischen './hello '. $ Data' kein Leerzeichen ist, wird es nicht funktionieren, da es nicht als Parameter übergeben wird, sondern nur ein riesiger Dateiname. Warum nicht einfach 'str_replace ('data: image/png; base64,', '', $ str)? –

+0

Also ändern Sie die Exec-Zeile: 'exec ("./Hallo $ data ", $ out, $ return);' Beachten Sie das Leerzeichen nach Hallo. – Nic3500

+0

Ihre Frage ist was? Was ist, wenn in $ data Leerzeichen enthalten sind? – Nic3500

Antwort

0

Versuchen Sie es mit:

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

statt nur die exec-Methode.

S.S .: Ich bin nicht sicher, ob die Ersetzung erforderlich ist oder nicht, wenn alle Befehl in Anführungszeichen steht, versuchen Sie mit dem Ersetzen und ohne es.