2011-01-23 39 views
1

标题描述了我的问题。 我用php解析文本文件。 该文件包含一个URL,一个谷歌日历供稿使用不同编辑器保存时的不同解析行为

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

我像这样访问

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

馈送信息时,我该文件保存与MAC文字编辑,然后寄托都很好。 但是当我用在Linux或Mac VIM保存它,然后它被加载的网址是

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

注意百分号被转化为:% - >%25和lineending到%0A

与此网址我访问供稿信息时出现错误,因为url是错误的。 用vim保存文本文件有什么问题?编码?

问候, 彼得

回答

2

%0A是换行字符的编码。换句话说,在不同的编辑器中你的行结尾是不同的(TextEdit的回车,vim的换行)。

如果你想让Vim写出来CR行尾,请使用以下命令:

:set fileformat mac 
+0

谢谢。所以百分比符号也被编码(%25)。我如何适应这与PHP?你知道吗?哪个编码是这个? – 2011-01-23 23:58:16

1

应该有你的php.ini参数“auto_detect_line_endings”,它通常被设定为“关”。改变它,应该解决问题。

如果这对您不可行,那么您可以在加载输入文档后清理任何不需要的字符。 PHP函数str_replace()函数做这一点比正则表达式快,所以我推荐它为你的情况:

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

我敢肯定有一个更有效的DOM某处解决方案/ libxml的库,但我没有调查过它。