使用PHP_EOL时不在输出中获取换行符

使用PHP_EOL时不在输出中获取换行符,php,Php,我正在整理一个字符串,并将其输出到.srt文件: while ($row = mysql_fetch_array($res)) { $srt = $srt . $row['line_number'] . PHP_EOL; $srt = $srt . str_replace(".", ",", $row['start']) . " --> " . str_replace(".", ",", $row['end']) .PHP_EOL ; $srt = $sr

我正在整理一个字符串,并将其输出到.srt文件:

while ($row = mysql_fetch_array($res)) {
    $srt = $srt . $row['line_number'] . PHP_EOL; 
    $srt = $srt . str_replace(".", ",", $row['start']) . " --> " . str_replace(".", ",", $row['end']) .PHP_EOL ;    
    $srt = $srt . br2nl($row['text']) . PHP_EOL; 
    $srt = $srt . PHP_EOL;  
}
但似乎
PHP\u EOL
不起作用,因为我的输出是:

100:00:02,107 --> 00:00:05,810you sure
而且没有任何新词。我正在尝试将我的输出设置为:

1
00:00:02,107 --> 00:00:05,810
you sure
接着是一条新线


当在我的计算机上通过localhost进行测试时,它可以工作。我的主机上的PHP版本是否缺少对
PHP_EOL
的支持?

PHP手册中说,PHP_EOL常量是从PHP4.3.10和PHP5.0.2开始提供的

PHP_下线(字符串) 此平台的正确“线端”符号。从PHP 4.3.10和PHP 5.0.2开始提供-

因此,请测试它是否存在:

var_dump(PHP_EOL); // should output: string(1) " "

如果没有定义,只要手动定义即可

define("PHP_EOL", "\n");
或者只使用
echo“\n”
echo”\r\n“

另一个可能的原因是,当您在浏览器中输出
$srt
变量时,您的输出和mime类型是在HTML中设置的,因此您将其视为一行,但如果查看源代码,则应跨越多行

为确保文本输出,您可以回显

header('Content-Type: text/plain', true);
PHP_EOL此平台的正确“行尾”符号

因此,它在本地主机上工作,因为它的窗口和windows换行符

您的在线网站可能在linux上,并提供了linux线路中断


要获得一致的结果,请使用
“\r\n”
而不是
PHP\u EOL
,尽管我认为媒体播放器能够识别任何类型的换行符

你确定你想要一个真正的终端而不是一个
吗?你的服务器在linux上,你在windows中打开文件吗?DXL我尝试过使用
但在.srt文件中,它看起来只是
Muse iam在windows上使用Wampserver它工作得很好,但在我的在线网站上它没有,所以我尝试使用var_dump(PHP_EOL);而且它没有任何输出?在我的本地主机上,输出为(true),因此未在服务器上定义。尝试使用“\n”代替PHP\u EOL。示例:
$srt=$srt$行[“行号”]。“\n”
header('Content-Type: text/plain', true);