PHPで改行文字を作成しようとしています。
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';
その後、作成したファイルをメモ帳で開くと、文字通り改行が書き込まれます。
1ジョン・ドウ\ r\n 1ジョン・ドウ\ r\n 1ジョン・ドウ\ r\n
私は\r\n
のさまざまなバリエーションを試しましたが、うまくいきません。改行が改行にならないのはなぜですか?
二重引用符で囲まれた文字列のみ エスケープシーケンス\r
および\n
をそれぞれ '0x0D'および '0x0A'として解釈するので、次のようにします。
"\r\n"
一重引用符で囲まれた文字列 一方、/はエスケープシーケンス\\
および\'
のみを知っています。
そのため、他の場所で生成された改行と一重引用符で囲まれた文字列を連結しない限り(例えば、二重引用符で囲まれた文字列"\r\n"
や chr
関数chr(0x0D).chr(0x0A)
を使用)、エディタで入力してください。
$s = 'some text before the line break
some text after';
特定の文字シーケンス(\r\n
など)が必要な場合は、必ずエディタで改行設定を確認してください。
プラットフォームに依存しない改行では、以下のように 定義済みのPHP_EOL
定数 を使うことができます。
echo $clientid, ' ', $lastname, PHP_EOL;
PHPの "echo"コマンドは生のhtmlとしてブラウザに出力を送るので、たとえ二重引用符で囲まれていてもブラウザはそれを2行に解析しません。HTMLの改行文字は意味がないからです。そのため、どちらかを使用する必要があります。
echo [output text]."<br>";
"echo"を使うとき、あるいは代わりにfwrite ...を使うとき.
fwrite([output text]."\n");
これは "\ n"の代わりにHTMLの改行を出力します。
プラットフォームに関係なく正しい文字を取得するには、定数PHP_EOLを使用してください。
http://us3.php.net/manual/en/reserved.constants.php
簡単な使用例
<?php
$data = 'First line' . PHP_EOL .
'Second line' . PHP_EOL .
'Third line';
file_put_contents("filename.txt", $data);
?>
二重引用符の間の文字列""
は内挿します。つまり、エスケープ文字を印刷可能文字に変換します。
一重引用符''
の間の文字列はリテラルです。つまり、文字が入力されたとおりに扱われます。
同じ行に両方を含めることができます。
echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";
出力:
$clientid $lastname
1 John Doe
実際には\r\n
は出力のhtml側です。これらの文字を使用すると、HTMLコード内に改行を作成して読みやすくすることができます。
echo "<html>First line \r\n Second line</html>";
出力されます:
<html>First line
Second line</html>
そのページを見ることは、
First line Second line
もし本当にこれを意図していたのなら、一重引用符を二重引用符で直すだけです:
echo "\r\n";
そうでなければ、テキストを分割するつもりなら、私たちのサンプル 'First line'と 'Second line'では、htmlコードを使わなければなりません:<br />
:
First line<br />Second line
それは出力されます:
First line
Second line
また、スクリプト全体を次のように置き換えると読みやすくなります。
echo "$clientid $lastname \r\n";
w3schoolはこのようにして提供しました:
echo nl2br("One line.\n Another line.");
この機能の使用によってあなたはそれをすることができます。
何らかの理由で、PHP内の改行エスケープについて尋ねるすべての投稿では、改行を一重引用符で囲まれた文字列に挿入するだけではまったく問題ないとは言えません。
例1.
echo 'foo\nbar';
例1は明らかに望ましい結果を出力しませんが、一重引用符で改行をエスケープすることはできませんが、次のようにすることもできます。
例2.
echo 'foo
bar';
例2はまさに望ましい振る舞いをしています。残念ながら、挿入される改行はオペレーティングシステムに依存しています。 Webブラウザ/サーバは改行が\ r、\ r\n、\ nのいずれであっても正しく解釈するので、これは通常問題にはなりません。
明らかにこの解決方法は、Webブラウザ以外の方法で複数のオペレーティングシステムにファイルを配布する予定がある場合には理想的ではありません。その場合あなたは他の答えの一つを見るべきです。
注:機能豊富なテキストエディタを使用すると、ファイルを編集しているものとは異なるオペレーティングシステム上の改行を表すバイナリ文字として改行を挿入できるはずです。それ以外のすべてが失敗した場合は、16進エディタを使用してバイナリのASCII文字を挿入するだけで済みます。
テキスト文字列の改行を取得するにはPHP nl2brを使用してください。
$ text = "Manuはいい子です。(Enter)うまくコーディングできます。
echo nl2br($ text);
結果
マヌはいい子です。
彼はうまくコーディングできます。
キャリッジリターンにchr(13)を使用し、改行にchr(10)を使用
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo chr (13). chr (10);
また、この組み合わせを一重引用符と二重引用符の両方で試しました。しかし、どれもうまくいっていません。 \n
を使用する代わりに、二重引用符で<br/>
を使用してください。このような..
$variable = "and";
echo "part 1 $variable part 2<br/>";
echo "part 1 ".$variable." part 2";
どんなecho文でも、二重引用符の中に常に<br>
を使います。