455

PHPで、改行文字を作成しようとしています。

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';

その後、作成したファイルをメモ帳で開くと、文字通り改行が書き込まれます。

1 John Doe \ r \ n 1 John Doe \ r \ n 1 John Doe \ r \ n

のバリエーションをたくさん試しました\r\nが、うまくいきません。改行が改行にならないのはなぜですか?

4

15 に答える 15

720

二重引用符で囲まれた文字列のみがエスケープシーケンス\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特定の文字シーケンスが必要な場合(たとえば)、必ずエディタで改行設定を確認してください。

于 2010-11-21T14:48:21.617 に答える
263

事前定義されたPHP_EOL定数を使用します。

echo $clientid, ' ', $lastname, PHP_EOL;

定数値は、PHPが実行されているオペレーティングシステムの行末に従って設定されます。Linuxでは、次のようになります"\n"。Windowsでは。になります"\r\n"

于 2010-11-21T14:50:36.750 に答える
105

PHPの「echo」コマンドは出力を生のhtmlとしてブラウザに送信するため、二重引用符で囲んでも、HTMLの改行文字は何も意味しないため、ブラウザはそれを2行に解析しません。そのため、次のいずれかを使用する必要があります。

echo [output text]."<br>";

「echo」を使用する場合、または代わりにfwriteを使用する場合...

fwrite([output text]."\n");

これにより、「\n」の代わりにHTML改行が出力されます。

于 2013-12-23T18:50:24.923 に答える
52

プラットフォームに関係なく、定数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);
?>
于 2015-01-04T06:00:17.253 に答える
24

二重引用符で囲まれた文字列は""補間されます。つまり、エスケープ文字を印刷可能な文字に変換します。

一重引用符で囲まれた文字列''はリテラルです。つまり、文字が入力されたとおりに処理されます。

同じ行に両方を含めることができます。

echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";

出力:

$clientid $lastname
1 John Doe
于 2012-11-21T20:07:40.837 に答える
16

これを使用する必要があります:

"\n"

PHPEOLもご覧ください。

于 2010-11-21T14:49:50.423 に答える
14

実際\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";

それ以外の場合、テキストを分割する場合は、サンプルの「1行目」と「2行目」でhtmlコードを使用する必要があります<br />::

First line<br />Second line

それは出力します:

First line
Second line

また、スクリプト全体を次のように置き換えると、読みやすくなります。

echo "$clientid $lastname \r\n";
于 2010-11-21T14:52:56.080 に答える
10

w3schoolはこのように提供しました:

echo nl2br("One line.\n Another line.");

この関数を使用することで、それを行うことができます。私は上記の他の方法を試しましたが、それらは私を助けません。

于 2015-08-16T10:26:20.187 に答える
6

私には何も機能していませんでした。

PHP_EOL

. "\r\n";

$NEWLINE_RE = '/(\r\n)|\r|\n/'; // take care of all possible newline-encodings in input file
$var = preg_replace($NEWLINE_RE,'', $var);

私のために働く:

$admin_email_Body = $admin_mail_body .'<br>' ."\r\n";
$admin_email_Body .= 'This is line 2 <br>' ."\r\n";
$admin_email_Body .= 'This is line 3 <br>' ."\r\n";
于 2020-01-04T04:34:29.680 に答える
4

何らかの理由で、PHPでの改行エスケープについて尋ねるすべての投稿は、一重引用符で囲まれた文字列に改行を挿入するだけで、あなたが思っていることを正確に実行できるというケースについて言及していません。

例1。

 echo 'foo\nbar';

例1は明らかに目的の結果を出力しませんが、改行を一重引用符で囲むことはできませんが、次のようにすることはできます。

例2。

 echo 'foo
 bar';

例2は、まさに望ましい動作をしています。残念ながら、挿入される改行はオペレーティングシステムに依存します。Webブラウザ/サーバーは改行が\r、\ r \ n、または\ nであるかどうかを正しく解釈するため、これは通常問題にはなりません。

明らかに、このソリューションは、Webブラウザや複数のオペレーティングシステム以外の方法でファイルを配布する場合は理想的ではありません。その場合、他の回答の1つが表示されます。

注:機能豊富なテキストエディタを使用すると、ファイルを編集しているオペレーティングシステムとは異なるオペレーティングシステムで改行を表すバイナリ文字として改行を挿入できるはずです。他のすべてが失敗した場合は、16進エディターを使用してバイナリASCII文字を挿入するだけで十分です。

于 2013-07-12T04:41:23.060 に答える
3

PHP nl2brを使用して、テキスト文字列の改行を取得します。

$ text = "マヌはいい子です。(Enter)彼はうまくコーディングできます。

echo nl2br($ text);

結果。

マヌーはいい子です。

彼はうまくコーディングできます。

于 2013-10-29T19:02:15.303 に答える
2

また、一重引用符と二重引用符の両方でこの組み合わせを試しました。しかし、どれもうまくいきませんでした。二重引用符で\nより適切に使用する代わりに。<br/>このような..

$variable = "and";
echo "part 1 $variable part 2<br/>";
echo "part 1 ".$variable." part 2";
于 2013-04-10T07:13:03.317 に答える
2

キャリッジリターンにはchr(13)を使用し、改行にはchr(10)を使用します

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo chr (13). chr (10);
于 2013-06-05T09:10:20.033 に答える
2

エコーステートメントでは、常に<br>二重引用符で囲みます。

于 2017-02-15T20:13:19.050 に答える
0

You Can Try This.
<?php
   $content = str_replace(PHP_EOL, "<br>", $your_content);
 ?>
 
<p><?php echo($content); ?></p>

于 2019-10-29T16:12:30.650 に答える