0

私のためにこれを見ていただきありがとうございます。

背景: 個人金融プロジェクトの OFX/QFX ファイルを処理しています。コードは C# で記述しましたが、完全に実行されます。インポート オブジェクトを作成し、OFX/QFX ファイルを 1 行ずつ処理し、前述のオブジェクトをコンソールに出力できます。ただし、.Net Framework で記述されていない Web アプリケーションで使用するために、これを PHP に移植しています。

問題: ファイルがユーザーによってアップロードされ、PHP ファイルに渡されます。を使用してファイルを 1 行ずつ読み取ると$line = fgets($file);、期待した結果が得られません。ファイルが開いていて、行が読み取られているという事実を知っています。でも; var_dump($line)変数が割り当てられた直後に 配置すると、"string(15) "ENG ""取得する必要があるのは次の場合です。

<LANGUAGE>ENG

私の処理モデルは、文字列のタグ部分を読み取る機能に大きく依存していますが、PHP がそれを取り除いているように見えるため、私のコードは期待どおりに動作しません。

質問: fgets() を使用しているときに完全な文字列値を受信しない理由を誰か教えてもらえますか? また、これを行うより正しい方法はありますか?私は .Net にかなり精通していますが、PHP は私にとって少し新しいので、私が理解していないのは PHP 言語の癖にすぎないと思います。

ありがとうございました

4

3 に答える 3

3

問題は<LANGUAGE>、ブラウザによって解析され、無効なHTMLタグと見なされ、無視されることです。

ブラウザでソースの表示を右クリックして、実際の出力を表示します。

于 2012-02-13T22:51:34.563 に答える
0

var_dump()の結果からわかるように、これは15文字の長さの文字列です。あなたの問題はおそらく<LANGUAGE>タグが表示されていないが「そこに」あることです。

htmlspecialchars($line);代わりに使用してみてください。ただし、変数値の型と長さが非常に明確に示されるため、通常はvar_dump()の使用をお勧めします。

于 2012-02-13T22:52:29.233 に答える
0

<LANGUAGE>ENGあなたが画面に出力されることを期待しているものであるかどうかは、おそらくそうであると思います。Web ブラウザはそれを見て、それをタグとして解析し、タグ自体ではなく、そのタグに関連付けられたデータのみを表示しようとします。PHPの問題ではありません。preタグを使用して行をエコーし​​てみてください

echo '<pre>' . $line . '</pre>';
于 2012-02-13T22:53:27.587 に答える