質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

1180閲覧

phpにおける、バックスラッシュnとrでの改行について

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/07/04 08:31

編集2020/07/04 08:31

よろしくお願いいたします。

phpにて、echoprintを使用して文章を開業したいときに、<br>ではなく、
\nもしくは\rでの改行はできますでしょうか。

先ほど、ブラウザで確認しましたが、スペースが空いたのみで改行されませんでした。

アドバイスのほどいただけますと幸いに存じます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

web サーバ経由で php が実行された場合は、特別なことがない場合 Content-type: text/htmlで出力され、ブラウザでは html として解釈されます。

html では、改行コードを含む、「U+0009 TAB (タブ), U+000A LF (改行), U+000C FF (頁送り), U+000D CR (復帰), U+0020 SPACE (空白) の5文字」を ホワイトスペースとして扱います。

ブラウザ上で、html として解釈されたホワイトスペースは、空白文字として扱われ、連続したホワイトスペースは多くの場合、1文字の空白にまとめられます。

ここまでが質問内容の整理と説明ですね。

で、要件を

  • phpにて、echoやprintを使用して文章を開業したいときに、<br>ではなく、

\nもしくは\rでの改行したい

  • ブラウザを使用して表現したい

と読み替えると、回答は

  • ブラウザに該当箇所が整形済みテキストであると解釈させれば良い

ということになります。

具体的には、すでに回答がついている「<pre>」を使用する方法の他に、Content-type: text/plainとして出力してやる、ちょっと変わった方法が考えられます。

php

1<?php 2header("Content-type: text/plain"); 3echo "test\ntest";

投稿2020/07/04 09:39

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/07/04 10:14

ご回答ありがとうございます。 細かい箇所は理解できていない点が多いですが、php記述内の\n等はhtml上のルールではブラウザ表示で改行整形されないということなのでしょうか preや"Content-type: text/plain"を使用することで、ブラウザ上で改行だということを認識させてあげる必要があるようですね。(理解が曖昧ですが...) 細かい仕組みまでご説明いただきありがとうございました。、
退会済みユーザー

退会済みユーザー

2020/07/04 10:37

回答にある通り、html として解釈された\n等はホワイトスペースとして扱われます。 <pre> の場合は、その有効範囲内において、記述内容が整形済みテキストであることがブラウザに認識されます。つまりここだけ、ホワイトスペースとして扱われなくなります。 実はそれ以外にも、ホワイトスペースの取り扱いを CSS で指定する事で、色々対応させることができます(かなり理解しにくい) https://developer.mozilla.org/ja/docs/Web/CSS/white-space 試せるようになっているので、触ってみてください。 Content-type: text/plain は web サーバから送信されるデータが、text/plain であることをブラウザに伝え、ブラウザはただのテキストとして表示を行います。つまり、たとえ <h1>等があっても、html として解釈されずそのまま表示されます。 余談ですが、この大本にある「php は普通に使うと、Content-type: text/html で出力される」というのは、非常に重要な概念で、セキュリティにも関わってきます。 XSS 対策のために行う、エスケープ処理の根底になります。 そのうち出てくる話なので覚えておいてください。
guest

0

phpにて出力したものはhtmlですので、<pre>タグを先頭に出力することで改行することは可能です。

html

1<pre>あああ\nいいい</pre>
あああ いいい

投稿2020/07/04 09:09

yuuyu

総合スコア1139

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/07/04 09:10

要件次第ですね。
yuuyu

2020/07/04 09:12

まぁどうしても、という時以外は<br>や文章を<p>で囲んだりするのが普通になりますね。。
退会済みユーザー

退会済みユーザー

2020/07/04 10:15

ありがとうございました。
guest

0

「改行コード」というものです。
ブラウザから実行確認する限り「HTMLタグ」以外は単なるテキストです。
CLI実行であれば改行コードはその「改行」の役割を果たしますが、
ブラウザから実行確認では基本的にインデント含めたHTMLの見た目を整える以外では意味がないと言っても良いと思います。
なので、ブラウザから確認した際も「ソースを表示」でHTMLを確認すると、「PHPの出力結果」が見れるので一応改行していることが確認できます。
ただし、HTMLタグではないのでブラウザ上ではその効果はありません。

投稿2020/07/04 09:07

編集2020/07/04 09:10
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/07/04 10:15

ありがとうございました。
guest

0

ブラウザでは\r\nでの改行はできませんね。
すなおに<br>使っておきましょう

参考:
【HTML初心者向け】brタグを使わず改行するたった1つの方法 | CodeCampus

投稿2020/07/04 09:09

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/07/04 10:15

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問