2011-01-23 8 views
1

タイトルに自分の問題が記述されています。 私はphpでテキストファイルを解析します。 このファイルは私がマックテキストエディットでこのファイルを保存するとき、その後、everthingが細かいです。この別のエディタで保存するときの解析動作が異なる

$doc = new DOMDocument(); 
$doc->load($feed); 

などのフィード情報にアクセスするGoogleカレンダーのフィード

http://www.google.com/calendar/feeds/example%40googlemail.com/public/full

へのURLが含まれています。パーセント記号がに変換されることを しかし、私は、LinuxやMac上のvimとそれを保存するときは、ロードされるURLは

http://www.google.com/calendar/feeds/example%2540googlemail.com/public/full%0A

です注:% - > 25%と%0A

にlineending

このURLは、URLが間違っているためフィード情報にアクセスする際にエラーが発生します。 vimでテキストファイルを保存する際に何が問題になりますか?エンコーディング?

に関して、 ピーター

答えて

2

%0Aは、改行文字のエンコーディングです。言い換えれば、行末はエディタによって異なります(TextEditの改行、vimの改行)。

あなたはvimの次のコマンドを使用し、CRの改行コードを書きたい場合:

:set fileformat mac 
+0

ありがとうございました。パーセント記号もエンコードされます(%25)。どのように私はPHPでこれを適応させることができますか?何か知ってる?これはどのエンコーディングですか? –

+1

URLエンコードです。あなたは 'load()'に渡す前に 'urldecode()'を試すことができます。 – Amber

1

を通常「オフ」に設定されているあなたのphp.iniのパラメータ「auto_detect_line_endings」があるはずです。それを変更すると、その問題を解決するはずです。

これが実現できない場合は、入力したdocを読み込んだ後に不要な文字をクリーンアップすることができます。 PHPの関数str_replace()このビット速く正規表現よりもありませんので、私はあなたのケースのためにそれをお勧めします:

$mystring = str_replace(chr(10), "", $mystring); //remove carriage returns 
$mystring = str_replace(chr(13), "", $mystring); //remove carriage returns 

私はどこかでDOM /のlibxmlライブラリで、より効率的なソリューションがあると確信していますしかし、私はそれを調査していない。

関連する問題