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

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

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

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

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

Q&A

解決済

3回答

5804閲覧

nl2brで改行できず、<br/>と反映されてしまう

ms5025

総合スコア292

PHP

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

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

0グッド

0クリップ

投稿2018/10/10 01:23

編集2018/10/10 01:38

前提・実現したいこと

nl2brで改行できず、<br/>と反映されてしまいます。
サーバ側ではなくできればtpl側だけで処理をしたいのですが
どのようにするとスマートでしょうか?

コードといっても各必要もないと思いますが一応。

$result.dataにはテキストエリアで前画面で入力された値が入っています。
例として
$result.data="あああ
ああ"
とします。

tpl側は

<td > {$result.data|nl2br]} </td>

とすると

あああ <br/> ああ

となってしまいます。

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

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

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

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

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

m.ts10806

2018/10/10 01:28

どのようなコードで起きた現象かがわからないとなんとも言えません。「どうしたらスマートか」は比較対象がないと判断できませんよね?それは質問者さんだけで判断できるものならいいですが、元のコードがないのにアドバイスは無理です。質問を編集して追記してください。
m.ts10806

2018/10/10 01:29

変換しようとしているデータのサンプルも必要です。再現確認をしないと回答ができない内容なので。
ms5025

2018/10/10 01:39

コードなんか必要ありますかね?この質問に。
m.ts10806

2018/10/10 01:43

どうやって「できない」のかわからないのに回答しようがないかと思いますが、そこは質問者さんが判断できることではないと思います。
mather

2018/10/10 01:44

出力されたHTMLのソースコードとして &lt;br/&gt; となってるんですか?
m.ts10806

2018/10/10 01:46

Smartyも2と3では仕様が大きく違うので、再現確認ができる情報を提示しないと無駄なやりとりが何度も発生することになります。そのうえで「コードなんか必要ありますかね?」というのは「解決なんてしなくてもいい」と言っているのとほぼ同等です。
ms5025

2018/10/10 01:50

>mather あああ <br/> ああのようになります。
mather

2018/10/10 01:55

それは、HTMLをブラウザで見たら正常に改行されているはずです。ブラウザで表示してないんですか?
CHERRY

2018/10/10 02:24

どのように実行して、結果をどのように表示させていますか?  Webブラウザは何ですか?  コマンドラインで実行して結果を表示しているわけではないですよね?
ms5025

2018/10/10 02:27

> mather CHERRY すいません、smartyの設定で$smarty->escape_html = true;と記述してる箇所をみつけました。そのせいだったようです。おさわがせしました。このプロパティに true を設定しておくことで、全てのテンプレート変数出力に対してHTMLエスケープが施されていたようです。割と長い時間ハマっていました。ありがとうございます。
guest

回答3

0

Smartyのデフォルトエスケープ機能を有効にした状態($smarty->escape_html = true;)では
nl2brは効かない

当たり前!

解決しました

投稿2018/10/10 02:30

ms5025

総合スコア292

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

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

0

ベストアンサー

nl2br - Smarty

与えられた変数内の全ての改行文字 "\n" を html の <br /> タグに変換します。 これは PHP の nl2br() 関数と同義です。

{$articleTitle|nl2br}

何か問題が?

投稿2018/10/10 01:36

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ms5025

2018/10/10 01:39

そのようにしましたが、 あああ <br/> ああ となってしまいます。
退会済みユーザー

退会済みユーザー

2018/10/10 01:41

Contents-Type: text/plain とかになってない?
ms5025

2018/10/10 01:47

>asahina1979 ええ!そういうこと? いや、得には指定していません。 何か指定しないとまずいのでしょうか?
ms5025

2018/10/10 02:12

すいません、ほんますいません $smarty->escape_html = true; になってました。 指摘うけてその周辺確認してみたら、Smartyのクラスの根っこでこんな記述があったので! あざっす!!
ms5025

2018/10/10 02:35

ありがとうございます! あんまりsmarty詳しくないもので、そっちの設定問題ってヒントもらえなかったらもう少し時間かかってたかもです。感謝です。
guest

0

nl2brは”HTMLの改行タグ”を追加するものです。
http://php.net/manual/ja/function.nl2br.php
\nなどではだめですか?

投稿2018/10/10 01:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/10/10 01:40

PHP側で実行するとエスケープ対象
退会済みユーザー

退会済みユーザー

2018/10/10 01:48

ああ、そうでしたすいません。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問