使用PHP_EOL时不在输出中获取换行符
我正在整理一个字符串,并将其输出到.srt文件:使用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
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);