在字符串中选择从位置到行末的内容

9
假设我有一个字符串"blbl\nblbl etc",我知道我应该从位置$pos开始。我必须选择到行末的所有内容。但是我不能使用以下方法:
substr($string, $pos, strpos($string, "\n", $pos))

Mac不使用\n作为分隔符。我该怎么办?


OS X使用\n作为换行符。只有System 9及更早版本的操作系统使用\r,如果你真的有用户在使用System 9(或者你自己正在使用),那么你需要担心的问题要多得多。 - Charles
这个字符串的来源是什么(指它是用户提供的还是系统生成的等)? - webbiedave
4个回答

18

它应该是:

substr($string, $pos, ( strpos($string, PHP_EOL, $pos) ) - $pos);

8
您可以尝试使用PHP_EOL常量:
substr($string, $pos, strpos($string, PHP_EOL, $pos));

它包含脚本运行的操作系统的换行符序列。

2

首先将字符串通过一个函数,替换掉 \r\n 或者 \r 为 \n。这么做非常值得,除非你想保留特定于平台的行尾符。

顺便说一下,现在Mac也使用 \n 了。


1
如果您需要处理字符串中的每一行,您可以将字符串拆分为数组。您可以使用preg_split()以一种识别多个系统换行符的方式来实现这一点。
$lines = preg_split("/\r\n|\n|\r/", $string);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接