■利用シーン
system関数を利用してその返り値であるXMLをsimplexml_load_stringを使って解析する
XML自体は必ず正しいものが返ってくるものとする
XML自体は必ず正しいものが返ってくるものとする
■原因
system関数を利用していたため
と
XML内に改行コードが入っていたため
system関数は最後の1行を返すため、XML中に改行コードが入っているとXMLの最終行のみがsystem関数の返り値として返ってくるためうまくパースできなかった
と
XML内に改行コードが入っていたため
system関数は最後の1行を返すため、XML中に改行コードが入っているとXMLの最終行のみがsystem関数の返り値として返ってくるためうまくパースできなかった
■対処
sysytem関数を利用せずshell_exec関数を使用した
(同様の関数でexec関数という関数ももあるが試したところダメだったため、自分のケースでは最終的にshell_execを利用することで解決した)
また、shell_execで取得したレスポンスのXMLに対してstr_replaceを使い改行コードをすべて空白に置換した
改行コードを置換することでshell_execの返り値にXML全体が含まれるようになった
どうやらsystem関数の返り値に対してはstr_replaceでの置換がうまく動作しないようでそこに嵌った
(同様の関数でexec関数という関数ももあるが試したところダメだったため、自分のケースでは最終的にshell_execを利用することで解決した)
また、shell_execで取得したレスポンスのXMLに対してstr_replaceを使い改行コードをすべて空白に置換した
改行コードを置換することでshell_execの返り値にXML全体が含まれるようになった
どうやらsystem関数の返り値に対してはstr_replaceでの置換がうまく動作しないようでそこに嵌った
とりあえず解決したので備忘録として残しておきます
ちなみにPHPのバージョンは5.3.3です
0 件のコメント:
コメントを投稿