我将一个字符串组合在一起,输出到一个.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后面跟着一条换行符。
当在我的计算机上通过本地主机进行测试时,它可以工作。我的主机上的PHP版本是否缺少对PHP_EOL的支持?
发布于 2012-07-17 23:32:02
PHP手册说,PHP_EOL常量可以从PHP4.3.10和PHP5.0.2开始使用。
PHP_EOL (string)这个平台正确的“行尾”符号。可从PHP4.3.10和PHP5.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 "\r\n"
另一个可能的原因是,当您在浏览器中输出$srt变量时,您的输出和mime类型都是用HTML设置的,因此您将它看作一行,但是如果您查看源,则应该跨越多行。
为了确保文本输出,如果希望保持html或位于php文件的顶部,可以回显一个<pre>标记,添加这一行以强制文本输出:
header('Content-Type: text/plain', true);发布于 2012-07-17 23:33:36
PHP_EOL这个平台的正确的‘线的结束’符号。
所以它可以在本地主机上工作,因为它的窗口会中断窗口的行距。
您的在线网站可能在linux上,并使linux中断。
要获得一致的结果,请使用"\r\n"而不是PHP_EOL,尽管我认为媒体播放器可以识别任何类型的换行。
https://stackoverflow.com/questions/11532182
复制相似问题