【问题标题】:Explode a string with line break [duplicate]用换行符分解字符串[重复]
【发布时间】:2013-06-04 22:31:39
【问题描述】:

我正在尝试使用explode 函数将字符串分解为数组。

我希望它使用在字符串中找到的换行符来打破字符串。

我查了一下,我尝试了所有方法,但我无法让它工作。

这是我目前所拥有的:

$r = explode("\r\n" , $roster[0]);

但是当我 var_dump 变量时,我得到以下信息:

array (size=1)
  0 => string '\r\n                         ( G  A  Sh Hi Ga Ta PIM, +\/-  Icetime Rating)\r\nR Danny Kristo            1  0  2  0  0  0    0    1    7.00    7\r\nR Brian Gionta            1  1  5  1  1  0    0    0   19.20    8\r\nR Steve Quailer...

有什么想法吗?

【问题讨论】:

  • 不,实际上恰恰相反。

标签: php arrays variables explode


【解决方案1】:

您可以尝试使用正则表达式拆分字符串。有一个换行符类:

$r = preg_split('/\R/', $string);

编辑:将缺少的分隔符添加到正则表达式和函数参数。

【讨论】:

  • 我试过了,我得到了这个:preg_split(): Delimiter must not be alphanumeric or backslash
  • 我已经更正了正则表达式。您应该知道,此表达式仅标识“真正的”换行符。正如raina77ow 发布的那样,字符串中的 '\r\n' 不是换行符,而是四个单独的字符。因此正则表达式将不匹配。
【解决方案2】:

问题在于原文中的\r\n 不是行尾符号——它只是字面上的“反斜杠-r-反斜杠-n”序列。因此,您需要考虑到这一点:

$r = explode('\r\n', $roster[0]);

...即,使用单引号来分隔字符串。

【讨论】:

  • 谢谢,它到处都说我应该放双引号而不是单引号...谢谢!
  • 更好地使用PHP_EOL 独立于平台的解决方案。
  • @Fr0zenFyr 你没抓住重点,这里的标题有误导性。 OP 的字符串带有斜线,后跟 rn,而不是 EOL 符号。如果是这样的话,@LucasKahlert 的答案将是最合适的,因为\R 元字符涵盖了所有基础。
【解决方案3】:

您可以使用系统相关的 EOL

 $r = explode(PHP_EOL, $roster[0]);

【讨论】:

  • 这是唯一对我有用的解决方案。谢谢:)
猜你喜欢
  • 2014-09-23
  • 2021-01-10
  • 2016-09-22
  • 2016-12-27
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 2013-08-30
  • 2016-03-22
相关资源
最近更新 更多