回答:
唯一の二重引用符で囲まれた文字列は、エスケープシーケンスを解釈\r
し、\n
あなたがしたいので、それぞれ「0x0Dの」と「は0x0A」のよう:
"\r\n"
一方、一重引用符で囲まれた文字列は、エスケープシーケンス\\
としか知りません\'
。
したがって、一重引用符付き文字列を他の場所で生成された改行と連結しない限り(たとえば、二重引用符付き文字列"\r\n"
を使用chr
する か、functionを使用してchr(0x0D).chr(0x0A)
)、一重引用符付き文字列内で改行する他の唯一の方法は、文字列をエディタで入力することです。
$s = 'some text before the line break
some text after';
特定の文字シーケンス(\r\n
たとえば)が必要な場合は、改行設定についてエディターを確認してください。
PHP_EOL
代わりに使用する必要があります
PHPの「echo」コマンドは、出力を未加工のhtmlとしてブラウザーに送信します。そのため、二重引用符で囲まれていても、HTMLの改行文字は何も意味しないため、ブラウザーは2行に解析しません。そのため、次のいずれかを使用する必要があります。
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
echo "$clientid $lastname\r\n"
実際に\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";
それ以外の場合、テキストを分割する場合は、サンプルの「最初の行」と「2番目の行」で、htmlコードを使用する必要があります<br />
。
First line<br />Second line
それは出力します:
First line
Second line
また、スクリプト全体を次のように置き換えると、読みやすくなります。
echo "$clientid $lastname \r\n";
First line Second line
-改行を含むすべての空白は、レンダリングされた出力で1つのスペース文字に圧縮されます。また、</br>
有効なHTML以外のものもあります。
w3schoolはこの方法を提供しました:
echo nl2br("One line.\n Another line.");
この機能を使用することでそれを行うことができます。私は上記の他の方法を試しましたが、それらは私を助けません。
nl2br()
関数は改行文字を<br />
HTMLタグに変換します。これは、ブラウザページに改行を作成する場合に役立ちますが、テキストファイルやJavaScriptに改行を作成したり、画面やコンソールに出力したりする場合には役立ちません。
何らかの理由で、PHPで改行のエスケープについて尋ねるすべての投稿で、単一引用符で囲まれた文字列に改行を挿入するだけで、思い通りの結果が得られる場合について言及していません。
例1。
echo 'foo\nbar';
例1は明らかに望ましい結果を出力しませんが、単一引用符で改行をエスケープすることはできませんが、次のようにすることはできます。
例2。
echo 'foo
bar';
例2には、まさに望ましい動作があります。残念ながら、挿入される改行はオペレーティングシステムに依存します。\ r、\ r \ n、\ nのいずれであっても、Webブラウザー/サーバーは改行を正しく解釈するため、これは通常問題ではありません。
Webブラウザーや複数のオペレーティングシステム以外の方法でファイルを配布する場合は、明らかにこのソリューションは理想的ではありません。その場合、他の答えの1つが表示されます。
注:機能豊富なテキストエディターを使用すると、ファイルを編集するオペレーティングシステムとは異なるオペレーティングシステム上の改行を表すバイナリ文字として改行を挿入できるはずです。他のすべてが失敗した場合は、16進エディターを使用してバイナリーのASCII文字を挿入するだけで十分です。
PHP nl2brを使用して、テキスト文字列の改行を取得します。
$ text = "Manu is a good boy。(Enter)彼は上手にコーディングできます。
echo nl2br($ text);
結果。
マヌーはいい子です。
彼はうまくコーディングできます。
nl2br
関数は、改行文字を<br />
HTMLタグに変換します。文字列に改行文字が含まれていない場合、この関数は何もしません!さらに、問題はHTMLの段落内の行を分割することではありません。それはについてです改行文字!
一重引用符と二重引用符の両方でこの組み合わせも試しました。しかし、どれもうまくいきませんでした。二重引用符で\n
より適切に使用する代わりに<br/>
。このような..
$variable = "and";
echo "part 1 $variable part 2<br/>";
echo "part 1 ".$variable." part 2";
キャリッジリターンにはchr(13)を、改行にはchr(10)を使用します。
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo chr (13). chr (10);
エコーステートメントについては、常に<br>
二重引用符で囲みます。
何もうまくいきませんでした。
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";
You Can Try This.
<?php
$content = str_replace(PHP_EOL, "<br>", $your_content);
?>
<p><?php echo($content); ?></p>