0

我有一页带有 textarea 的内容保存到数据库中。
内容如下所示:

before
--------------
after

现在我需要将文本拆分为“之前”和“之后” - 没有任何换行符。

所以我的问题是:
EOL 字符取决于什么?
a) 在平台上用户正在运行
b) 在 PHP 服务器的平台上
c) 在 DB 服务器的平台上

有没有更好的跨平台解决方案?

$string_exploded = explode( "\n". $delimiter. "\n", $string );

if( count($string_exploded) === 1 )
{
    $string_exploded = explode( "\r\n". $delimiter. "\r\n", $string );
}

谢谢大家的回答

4

2 回答 2

3

你应该使用PHP_EOL. 这将符合机器的正确行尾。

如果您只是从数据库中提取数据,那么您应该使用加入它们时使用的相同角色进行爆炸。

即使您担心字符串末尾有空格,也请在trim之后使用以对自己感到满意。

于 2012-07-11T19:17:20.460 回答
0

如果您不想担心数据库中可能出现哪些行尾,另一种解决方案是使用preg_split()代替。

像这样的东西:

$string_exploded = preg_split('/(\\n|\\r\\n)' . $delimiter . '(\\n|\\r\\n)/', $string);

这有一个额外的好处,PREG_SPLIT_NO_EMPTY如果您的数据可能包含没有数据的双分隔符,您可以使用它自动丢弃任何空条目。

于 2012-07-11T19:32:37.383 回答