2012-02-13 17 views
0

ありがとうございました。PHPで文字列を処理する際に予期しない結果が発生しました

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

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

<LANGUAGE>ENG 

マイ処理モデルが重く、文字列のタグ部分を読み取る能力に依存しますが、PHPのように見えるので、私のコードは期待どおりに実行されません。

質問:fgets()を使用しているときに、なぜ私が完全な文字列値を受け取っていないのか教えていただけますか?これを行うより正しい方法がありますか?私は.NETに精通していますが、PHPは少し新しくなっているので、理解できないPHP言語の単なるものだと仮定しています。

は、問題が <LANGUAGE>が考えられ、ブラウザで無効なHTMLタグを解析され、無視されていることであるあなたに

+0

回線をエコーするとどうなりますか? – FreudianSlip

+0

変数は正しいですが、ブラウザに印刷されるとタグは無視され、HTMLとして扱われます。 –

答えて

0

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

htmlspecialchars($line);を代わりに使用してください。しかし、変数値の型と長さをはっきりと示しているので、通常はvar_dump()の使用をお勧めします。

+0

あなたのポストだった。あなたのすべての記事の集大成は私を正しい方向に導く助けとなりました。 –

3

ありがとうございます。

ブラウザで表示ソースを右クリックすると、実際の出力が表示されます。

+0

ありがとうございます。この少しの情報を知ることで、この問題はコード自体ではなく自分のコードの記述にあることに気がつきました。これは間違いなく正しい道に私を置いた。もう一度、ありがとう! –

+0

ようこそ。私はうまく働いた:) –

0

<LANGUAGE>ENGが画面に出力されていると思われる場合は、私は推測するつもりです。あなたのWebブラウザはそれを見て、それをタグとして解析し、そのタグ自体ではなくそのタグに関連するデータのみを表示します。 PHPでは問題ありません。 preタグを使用して回線をエコーし​​てみてください

echo '<pre>' . $line . '</pre>'; 
+0

これも私にとって助けになりました。ありがとうございました! –

関連する問題