Call a program via shell_exec with utf-8 text input Call a program via shell_exec with utf-8 text input shell shell

Call a program via shell_exec with utf-8 text input


Try this code:

<?php  // The word we are checking  $subject = 'sagadījās';  // We want file pointers for all 3 std streams  $descriptors = array (    0 => array("pipe", "r"),  // STDIN    1 => array("pipe", "w"),  // STDOUT    2 => array("pipe", "w")   // STDERR  );  // An environment variable  $env = array(    'LANG' => 'lv_LV.utf-8'  );  // Try and start the process  if (!is_resource($process = proc_open('hunspell -d lv_LV,en_US', $descriptors, $pipes, NULL, $env))) {    die("Could not start Hunspell!");  }  // Put pipes into sensibly named variables  $stdIn = &$pipes[0];  $stdOut = &$pipes[1];  $stdErr = &$pipes[2];  unset($pipes);  // Write the data to the process and close the pipe  fwrite($stdIn, $subject);  fclose($stdIn);  // Display raw output  echo "STDOUT:\n";  while (!feof($stdOut)) echo fgets($stdOut);  fclose($stdOut);  // Display raw errors  echo "\n\nSTDERR:\n";  while (!feof($stdErr)) echo fgets($stdErr);  fclose($stdErr);  // Close the process pointer  proc_close($process);?>

Don't forget to verify that the encoding of the file (and therefore the encoding of the data you are passing) actually is UTF-8 ;-)