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

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

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

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

Smarty

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

5843閲覧

HTMLタグを含むCSVファイルを読み込んでタグと認識させずに表示させたい

lupus_dingo

総合スコア257

PHP

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

Smarty

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/05/17 14:51

HTMLタグをデータに含むCSVファイルがあります。
それをPHP、Smartyを経由してテーブルのtdタグに表示させたいのですが以下の方法だとHTMLタグと解釈されてしまい、表示がぐちゃぐちゃになります。

if(!$handle = fopen("data/list.tsv", "r")){
echo "Cannot open file (list.tsv')";
exit;
}
while (($data[] = fgetcsv($handle, 1000, "\t")) !== FALSE);
fclose($handle);

少し調べると、ソースを表示させるときは<pre></pre>で囲むようですが、やってみるとHTMLタグの部分が削除された状態で表示され、しかもテーブルのデザインも変わり、サイドバーも崩れたりとうまくいきませんでした。
どのようにすれば<html><script>などをそのまま表示できるでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

Smarty テンプレートのコードが書かれていないので具体的な内容は示せませんが、
テンプレートで変数の出力時に escape 修飾子を使うようにしてください。

{$value|escape}

もしくは smarty の $escape_html を有効にしてください。
この場合、テンプレートの変数の出力に escape 修飾子は必要ありません。

lang

1$smarty->escape_html = true;

投稿2015/05/17 15:11

ngyuki

総合スコア4514

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

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

lupus_dingo

2015/05/23 04:55

回答ありがとうございます。 $smarty->escape_html = true; 上記の方法でうまくいきましたのでこの方法にします。
ngyuki

2015/05/23 08:11

解決したならベストアンサーをつけてもらえると、解決済になっていることがひと目でわかるし、わたしにスコアも入ってウハウハと、いいことずくめですよ
guest

0

こんにちは。

CSVから取り込んだHTMLタグを含む文字列を表示させる前に、
その文字列に含まれる、

  (1) "<" を"<" に変換

 (2) ">" を">" に変換

した文字列を作成して、これを表示させればうまくいくと思います。

たとえば、CSVに入っている文字列が
"**<table>で表を作成"
ならば、これを
"
<table>**で表を作成"
に変換してものを表示させれば、画面上では、

<table>で表を作成 と表示されると思います。 ちなみに、**&lt;table&gt;** に変換した文字列を、<pre>で 囲む必要はありません。 (※囲むとどうなるか試してみるのもよいでしょう)

ちなみに、ご存知かもしれませんが、> のような表記を、文字実体参照とか
エンティティ参照などと呼び、詳細な説明は、たとえば以下にあります。

wiki/文字参照

ご参考になれば幸いです。

投稿2015/05/17 15:10

編集2015/05/17 15:15
jun68ykt

総合スコア9058

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

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

jun68ykt

2015/05/17 15:17

Smartyをご使用なのですね。でしたら、後の回答者さんの方法のほうが簡単でよいと思います。
lupus_dingo

2015/05/23 05:04

回答ありがとうございます。 ngyukiさんの方法にしました。 文字列を置換する方法は知っていましたが、元のファイルはいじりたくなかったので考えてませんでした。 例えば、「&lt;table&gt;で表を作成」とそのまま表示したい場合はどうする?とかを考えるとキリがなさそうだったので(笑)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問