[英]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.