繁体   English   中英

使用不同的编辑器保存时的不同解析行为

[英]Different parsing behavior when saving with different editor

标题描述了我的问题。 我用php解析文本文件。 此文件包含Google日历供稿的网址

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

我这样访问提要信息

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

当我使用mac textedit保存此文件时,一切都很好。 但是当我在Linux或Mac上用vim保存它时,加载的网址是

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

请注意,百分号将转换为:%->%25,而行尾转换为%0A

使用此URL,访问提要信息时出现错误,因为URL错误。 用vim保存文本文件有什么问题? 编码?

问候,彼得

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

如果要让vim写出CR行的结尾,请使用以下命令:

:set fileformat mac

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库中的某处有一个更有效的解决方案,但我尚未对此进行调查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM