Я ищу возможность отправить смешанную многострочную строку PHP с помощью proc_open (exec, passthru или что-то еще) через канал в сценарий bash. Наконец, в этом скрипте я хочу получить смешанную многострочную строку и сохранить ее в переменной.
PHP:
// static way
$some_multiline_string = 'some $%§%& mixed &/(/(
content
with newlines';
// dynamic way:
// the mixed content is coming from the database
// so actually it is not initialized like in the previous lines, but more like this:
$some_multiline_string = $db_result['some_multiline_string'];
// escaping
$some_multiline_string = escapeshellargs($some_multiline_string);
// execution
$process = proc_open("printf $some_multiline_string | some_script.sh args");
...
Баш:
#!/bin/bash
mixed_multiline_string=$(</dev/stdin)
echo -e "$mixed_multiline_string"
...
Как правильно избежать смешанного содержимого, прежде чем использовать его в команде? Я уже пробовал escapeshellargs и escapeshellcmd, но либо есть неэкранированный символ, который останавливает процесс, либо он работает, но требует слишком много времени (1,5 минуты) для обработки.
Вот ссылка на пример строки смешанного содержимого: http://playmobox.com/js/test.txt
Большое спасибо!