我有一个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 );
}
谢谢大家的答案
答案 0 :(得分:3)
您应该使用PHP_EOL
。这将符合机器的正确行结束。
如果您只是从数据库中拔出,那么您应该使用与之相同的角色进行爆炸。
即使您担心字符串末尾有空格,也可以事后用trim
对自己感到满意。
答案 1 :(得分:0)
另一种解决方案是,如果您不想担心数据库中可能出现的行结尾,请改用preg_split()。
这样的事情:
$string_exploded = preg_split('/(\\n|\\r\\n)' . $delimiter . '(\\n|\\r\\n)/', $string);
如果您的数据可能包含没有数据的双分隔符,则可以使用PREG_SPLIT_NO_EMPTY
使其自动丢弃任何空条目。