str_replace()
PHP でシェル コマンドを作成しようとしているときに、関数に問題が発生しました。シェルでは、スペースを含む行をタブで終了すると、次のようになります。
tar cvfz destination/filename.zip source/Name\ Of\ The\+\ Folder
したがって、これは、このコマンドを 経由exec()
で実行するには、PHP の文字列に含まれるスペースをすべて置き換える必要があることを示しています。この問題を解決するために、私は使用しています
$q = str_replace(' ', '\ ' , $q);
スペースを「」ではなく「\」にフォーマットするために、文字列解析の開始時に。私が抱えている問題は、この特定のフォルダーでは、プラス記号も削除され、次のようにフォーマットされることです。
tar cvfz destination/Name\ Of\ The\ \ \ Folder.tgz source/Name\ Of\ The\ \ \ Folder
str_replace()
プラス記号を削除しないように設定するにはどうすればよいですか? これまでの私の限られたテストから、これらから何も削除されていません:-, %, @, !, (, *, ), ^, =