8

.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ますか?

4

2 に答える 2

8

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 "\r\n"

もう 1 つの考えられる理由は、$srt変数をブラウザーで出力するときに、MIME タイプが HTML で設定されているため、1 行として表示されますが、ソースを表示すると、複数行にまたがる必要があります。

<pre>テキスト出力を確実にするために、html を保持したい場合はタグをエコーアウトするか、php ファイルの先頭に次の行を追加してテキスト出力を強制します。

header('Content-Type: text/plain', true);
于 2012-07-17T23:32:02.897 に答える
1

PHP_EOL このプラットフォームの正しい「行末」記号。

したがって、そのウィンドウとウィンドウの改行を与えるため、ローカルホストで動作します

あなたのオンライン Web サイトはおそらく Linux 上にあり、Linux の改行が表示されます

一貫した結果を得るには、"\r\n"代わりに を使用しますがPHP_EOL、メディア プレーヤーはあらゆるスタイルの改行を認識できると思います。

于 2012-07-17T23:33:36.580 に答える