PHP file() 函数读取文件时换行符的影响及处理方法

PHP 的 file() 函数...其中...读取文件时...换行符很烦人。

默认情况下...它也会以每行的换行符读取。
例如...你有一个文件...内容是1 2 08 8 1 01 1 8 ...它正在读取的数组...是...array('1 2 08 8 ' 'n', '1 01 1 8 ' 'n');...如你所见...有一个额外的 'n'...
那么问题来了...你必须使用 in_array() 或类似的东西...来匹配 '1 2 08 8 '...结果不匹配...因为数组是 '1 2 08 8 ' 'N'...那是不同的。

我以前遇到过这种情况...在一个项目中...2 02 2 年...我们有一个请求文件...使用file()读取它...然后匹配请求编号...一堆错误...我后来发现...都是因为换行...
有几种解决方案...
其中一个...是使用 array_map('trim', ...)...修剪每个元素...并删除两侧的空字符。
例如...$array1 =file('list.txt'); $array1 =array_map('trim', $array1 );...比如...'1 2 08 8 ' 'n' 变成 '1 2 08 8 '...并且匹配正确。

这个方法的好处是...还可以去除空格等。
但是你要小心...如果文件开头有空格...你就要考虑一下了。

另一件事...更高效的是...当使用 file() 时...添加 FILE_IGNORE_NEW_LINES 标记。
像这样... $array1 =file('list.txt', FILE_IGNORE_NEW_LINES);...这样读...不会有换行...直接是'1 2 08 8 ','1 01 1 8 '...这个推荐...很简单。

还有一件事...是使用 rtrim()...如果您只想删除右侧的换行符...您可以使用... $array1 =array_map(function($line){return rtrim($line, ' ');}, file('list.txt'));...这样...左边的空格就剩下了...而右边的换行符消失了。

注意...只需确保数据格式一致...不要在这里换行,那里也不要换行...您会感到困惑。
此外... FILE_IGNORE_NEW_LINES 在读取时处理得比稍后切割更快。

总而言之...我认为最好先使用 FILE_IGNORE_NEW_LINES...它简单明了。
要点是...你必须知道 file() 默认情况下会有一个换行符...然后处理它...以避免匹配问题。

PHP 中实现换行的正确方法

nl2 br() 函数专门将 n 转换为
以便浏览器识别换行符。

HTML直接读取n,所以需要将其转换为


使用此挂钩更改 WooCommerce 中的文本。

补充
如果返回一个字符串,不要直接回显它。

无法添加
标记,因为字符串不包含 n。

特殊字符必须转义。
如果不转义的话,字符就会乱码。

直接n没有效果,必须转发。

钩子的直接回显重复,必须返回。

不转义特殊字符会导致错误。

添加
只需一行代码。

所有PHP网页都可以使用。

php内容怎么换行

说白了,PHP中的换行方式只有几种。
关键看你用在什么地方——nl2 br()对于网页来说最稳定,PHP_EOL对于命令框架或文件来说最省心,Heredoc最适合写代码块。

先说亮点:去年我们跑一个电商项目,用nl2 br()直接输出网页。
结果,一位客户报告说换行符被搞乱了。
后来发现没有添加
标签——而且没有多少人注意到。
还有一点是,在创建日志系统时,硬键入 n 会在 Windows 服务器上引起问题。
相反,使用 PHP_EOL 直接跨平台运行。
这是值回票价的 还有一个重要的细节。
例如,如果您使用 print_r 显示数组,它会非常巧妙地自动换行。
但是,如果输出纯字符串,仍然需要手动添加 PHP_EOL。

一开始我以为Heredoc和Nowdoc很高级,后来发现写一个简单的脚本还不如直接链接PHP_EOL那么高效。
等等,还有别的事。
当使用 echo 进行多层嵌套输出时,请不要忘记浏览器默认情况下不会解析
,因此您必须添加它。

建议进一步尝试 PHP_EOL。
跨平台问题基本被忽略。
但请记住,在输出到 HTML 之前,nl2 br() 是一个很好的搭档。