我正在组合一个字符串,将其输出到.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_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常量自PHP 4.3.10和PHP 5.0.2 以来就可用
PHP_EOL(字符串)此平台的正确"终点"符号。从PHP 4.3.10和PHP 5.0.2开始提供-http://php.net/manual/en/reserved.constants.php
所以测试一下它是否存在:
var_dump(PHP_EOL); // should output: string(1) " "
或
var_dump(defined("PHP_EOL")); // should output if exists: bool(true)
如果没有定义,如果你想要,只需手动定义
define("PHP_EOL", "n");
或者只使用echo "n"
或echo "rn"
另一个可能的原因是,当你在浏览器中输出$srt
变量时,你的输出和mime类型是在HTML中设置的,所以你把它看作一行,但如果你查看源代码,它应该跨多行。
为了确保文本输出,如果你想保留html或在php文件的顶部,你可以回显一个<pre>
标记,添加这一行以强制文本输出:
header('Content-Type: text/plain', true);
PHP_EOL此平台的正确"线路终点"符号。
所以它在本地主机上工作,因为它的窗口并给出窗口换行
你的在线网站可能在linux上,并给出了linux换行
为了获得一致的结果,使用"rn"
而不是PHP_EOL
,尽管我认为媒体播放器将能够识别任何类型的换行符。