我有这个字符串
如您所见,它显然包含一个新行。我想将该消息拆分为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." )
我想问一下,为什么第一个例子没有像我期望的那样工作,并且有什么方法可以使它工作,因为我真的不想在那里硬编码新行字符。谢谢。
我忘了提一下,该消息是在当前正在测试此代码的同一台机器上创建的。没有操作系统更改。
答案 0 :(得分:4)
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
。