按\ r \ n& amp;爆炸字符串\ n& \ r \ n?

时间:2011-02-19 20:39:43

标签: php unicode

我想按行分割字符串,但我希望它基于所有主要使用的换行符:

  • \ n
  • \ r \ n
  • \ r

返回包含每一行的数组。

4 个答案:

答案 0 :(得分:39)

您可以使用正则表达式而不是preg_split

$lines = preg_split('/\n|\r\n?/', $str);

正则表达式\n|\r\n?匹配LF或CR后跟LF。

答案 1 :(得分:23)

preg_split('/\R/', $str);

在PHP preg_split(),preg_match和preg_replace中,\R匹配任何类型的所有换行符。

http://www.pcre.org/pcre.txt

默认情况下,模式中的序列\ R匹配任何Unicode换行符   无论选择什么作为行结束序列。如果   你指定

- 使能BSR-anycrlf

默认值已更改,因此\ R仅匹配CR,LF或CRLF。什么-   在构建PCRE时选择永远是可以在库中重写的   函数被调用。

答案 2 :(得分:1)

您可以使用唯一的占位符替换所有出现的中断字符,然后在数组中展开字符串,执行以下操作:

$my_string = preg_replace(array('/\n/', '/\r/'), '#PH#', $my_string);
$my_array = explode('#PH', $my_string);

答案 3 :(得分:0)

爆炸字符串,删除修剪功能之类的空格

preg_split('/\n|\r\n?\s*/', $string)