我有这串
如您所见,它显然包含一个新行。我想将该消息拆分为2条消息的数组,并且我想explode()
与结合使用以PHP_EOL
实现多操作系统功能,但令我感到惊讶的是,它不起作用。
explode(PHP_EOL, $str); // Array( [0] => "Divakat has attacked Gergana, dealing 591 physical damage. ( 2 absorbed )
// Gergana has died." )
explode("\n", $str); // Array( [0] => ""Divakat has attacked Gergana, dealing 591 physical damage. ( 2 absorbed )", [1] => "Gergana has died." )
我想问一下,为什么第一个示例不能按我预期的那样工作,并且有什么办法可以使它工作,因为我真的不想在其中对新的换行符进行硬编码。谢谢你。
我忘了提一下,该消息是在当前正在测试此代码的同一台计算机上创建的。没有操作系统更改。
PHP_EOL
表示您当前使用的平台的行尾序列。它不能神奇地使字符串中使用的行尾序列与平台的行尾序列相同。
例如,这是一个带有\n
(硬编码的Unix EOL)的字符串:
$str = "Hello\nWorld";
如果您在Unix系统上运行此命令,它将显示2:
echo count(explode(PHP_EOL, $str));
但是在另一个平台上它将打印1,因为$str
它既不包含Windows也不包含Mac EOL序列。
更新:创建输入的位置没有任何区别;只有它是如何创建的。您可以在Windows系统上使用Unix EOL轻松创建字符串,只需在其中包含硬编码即可\n
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句