DBからデータを取り出し、execコマンドでXMLを作成するPHPスクリプトがあります(Linux OSの場合)。linuxコマンド:不正な置き換え
私はそれを作成するための良い方法ではありません知っている、私は後でこれを更新します:)
をとにかく、私の問題は、それがエラー「悪い置換」を提供することです。
:、私は手動でいくつかの特殊文字をエスケープ:ここは、あなたが「有効なXML」(うまくフォーマットされたIE)を作成するためにあることに気づくことができ ...あなたのエラーを表示することができ、簡単なPHPコードであります
<?php
$field="\${sao{}}\$";
$fieldParsed.= str_replace(
array("&", "<", ">", '"', "'", "\\", "`"),
array("&", "<", ">", """, "'", "\\\\", "`"),
$field
);
$data="<doc><field name=\"myname\">".$fieldParsed."</field></doc>";
$cmd='echo "'.addSlashes($data).'" >> /tmp/test.txt';
echo "\n\n".$cmd. "\n\n";
exec($cmd);
$データの "bash解釈"を避ける方法はありますか? つまり、そのままそのまま使用してください。
注:このコードはほんの一例であるため、$は有効な回答ではありません。私は一般的な解決策(もしあれば)を探しています...
ありがとう。
?このエラーはどこで正確に得られますか?それが本当に 'exec()'にある場合、その時の '$ cmd'の正確な内容は何ですか? –
さて、あなたは '$ data'をphpでファイルに書き出し、phpから呼び出す別のbashスクリプトでファイルを読むことができます。少なくともそれはすべての文字列の連結とPHPで渡す引数を避けるでしょう。 – jDo
私はexecを実行すると、bashは$を "コマンド"として解釈するという問題があると思います。例:$ field = "my text with backquote"; "&#96"で "' "を置き換えなかった場合にもエラーが発生します... – Bast