行结束符\r\n和\n坑人一例

2024-06-05 16:36
文章标签 结束符 一例 坑人

本文主要是介绍行结束符\r\n和\n坑人一例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

起因,我想利用一个记录了mac地址列表的文本文件,产生类似与map的格式。mac.txt 内容如下(为了方便叙述,只保留了5行):

98EECB8C6766
98EECB89E357
98EECB8C7879
98EECB8C6A10
98EECB8C6828

处理脚本  format.php 如下:

<?php$content = file_get_contents('mac.txt');
$lines = explode("\n", $content);
var_dump($lines);for ($i = 0; $i < count($lines); $i++) {echo '"'.$lines[$i].'":'.($i+1).",\n";
}

结果,输出的内容有点怪异:

array(5) {[0]=>
" string(13) "98EECB8C6766[1]=>
" string(13) "98EECB89E357[2]=>
" string(13) "98EECB8C7879[3]=>
" string(13) "98EECB8C6A10[4]=>string(12) "98EECB8C6828"
}
":1,ECB8C6766
":2,ECB89E357
":3,ECB8C7879
":4,ECB8C6A10
"98EECB8C6828":5,

当时心急,调试了半天不知道问题在哪里。怪也怪我看看内容简单,当时心又急,就想粗暴使用 file_get_contents 和 explode 解决问题,没有耐心分析原因,只知道瞎改输出格式,就没有找到问题。

问题就出在你没法知道 mac.txt 的行结束符使用的是  \n 还是 \r\n。正好 mac.txt 是 Windows 下拷贝终端输出到记事本生成的,而上述代码用 \n 来分割内容,从而数组每个元素是字符串  xxxx\r,在输出时,因为\r,后续的输出内容会覆盖前面的输出内容。

知道了原因自然好办了,给 echo 语句加 trim 就行:

echo '"'.trim($lines[$i]).'":'.($i+1).",\n";

这篇关于行结束符\r\n和\n坑人一例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1033591

相关文章

【Rust日报】 2019-05-26:切片索引检查导致的3倍性能下降问题一例

漫游 Tox-rs,第一部分 长文预警。Tox 是一个分布式的P2P,加密传输,易于使用的基于DHT的网络。 Tox 原来是个C项目,作者用Rust通过审视发现,实现里面有不少漏洞,易被攻击。所以他用Rust重写了它。就是上面那个项目地址。现在作者,开始整理这几年的工作,开始生成文档。 Read More 切片索引检查导致的3倍性能下降问题一例 作者发现下面这两片代码: pub fn

香港优才计划是坑人的吗?申请的人都在说……

大家好啊!最近看到超多小伙伴私信我说申请香港优才被“坑”了,被割了一波韭菜🌿心疼你们!作为一个通过这个计划顺利移民香港的老司机🚗,我必须出来吐槽一下,并且把我的成功经验分享给大家! 为什么这么多人觉得香港优才计划是个坑? 被拒后投诉无门~ 不想被坑? 这几点必须做到啊! 1️⃣ 材料准备不全或混乱❌ —— 大家都知道香港的事情讲究条理,但还是有不少朋友在这一点上栽跟头。提交的

VS2008 加载包失败解决一例

定制安装了 VS2008,  只装了 VC 相关的组件. 升级 SP1, 导致出现"加载包失败"的提示,具体提示如下:   由于前面的错误,Microsoft.Data.Entity.Design.Package.MicrosoftDataEntityDesignPackage, Microsoft.Data.Entity.Design.Package, Version=9.0.0.0,

php中文字符串截取函数一例

<?php/****首先是CSDN论坛PHP斑竹xuzuning(唠叨)老大的,支持gb2312,gbk,big三种编码。以下是代码:http://www.jbxue.com***/$len = 19;$text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";echo strlen($text)<=$len ? $text : (substr($text,0,$len)

CentOS6系统因目录有隐含i权限属性致下属文件无法删除的故障一例

CentOS6服务器在升级openssh时因系统目录权限异常(有隐含i权限属性),下属文件无法删除,导致系统问题的故障一例。 一、问题现象 CentOS6在升级openssh时,提示如下问题: warning: /etc/ssh/sshd_config created as /etc/ssh/sshd_config.rpmnewerror: unpacking of archive fail

【JavaScript】P3 JavaScipt 注释方法、结束符、输入输出

小结: Js 注释: 单行注释://多行注释:/* */ Js 结束符: 分号; 可以加也可以不加 Js 输入输出: 输入:prompt()输出:document.write() 在页面中打印,console.log() 在控制台中打印 正文: 注释 单行注释快捷键:ctrl + / 多行注释快捷键:shift + alt + a <body><script>// 这是单行注释

18.04版本的ubuntu没有连接网络的图标(坑人版)

以下更新内核别看,因为后面安装驱动报一堆错误!!! 不升级内核成功方法跳转连接:https://blog.csdn.net/weixin_53765004/article/details/138771613?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%2213877

python文件行结束符问题

由于平台不同行结束符不同,Python中解决了这个问题, os 模块属性 描述 linesep 用于在文件中分隔行的字符串 sep 用来分隔文件路径名的字符串 pathsep 用于分隔文件路径的字符串 curdir 当前工作目录的字符串名称 pardir 当前工作目录的)父目录字符串名称 不管你使用的是什么平台, 只要你导入了 os 模块, 这些变量自动会被设置为正确的值, ***

分享 Kamailio 5.7.x 预处理一例

来自工单,很不错 不翻译了,认真看的话都能看懂 #!define IPADDR 127.0.0.1 #!defexp SIPURI "sip:" + IPADDR + ":5060" #!defexp QSIPURI '"sip:' + IPADDR + ':5060"' #!defexp V16 1<<4 Another possibility is using modparam

nginx正向代理配置简单一例

Nginx正向代理配置如下: server{listen 8080;server_name www.jbxue.com;index index.html index.htm index.php;root /home/wwwroot;location / {resolver 192.168.8.88;proxy_pass $scheme://$http_