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

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

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

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

Q&A

解決済

2回答

3867閲覧

htmlファイルからtplファイルへ変換

lupus_dingo

総合スコア257

PHP

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

0グッド

2クリップ

投稿2015/02/26 14:11

HTMLファイルからtplファイルを作成しようと思っています。

文字コードはSJISです。
{literal}{/literal}で文字列を囲む必要があるのはどのような場合でしょうか?

調べてみるとhttp://www.smarty.net/docsv2/ja/language.function.literal.tplに、
「中括弧がテンプレートの デリミタ として解釈されるとまずい場合に使用します。」とあるのですが 、中括弧を含まない単純な日本語の文字列(<H2>あああ</H2>など)でもliteralで囲まないとエラーになる場合があります。

どのような場合に、どこからどこまでを囲むのが正しいのか教えてほしいです。
たとえば、

<H3>あああ<span>いいい</span></H3> の場合は、 <H3>あああ{literal}<span>いいい</span>{/literal}</H3> <H3>{literal}あああ<span>いいい</span>{/literal}</H3> {literal}<H3>あああ<span>いいい</span></H3>{/literal} のうちどれが正しいのかなど。

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

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

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

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

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

guest

回答2

0

ベストアンサー

SmartyとSJISの相性が悪いというよりは、事実上「インターネット
とSJISの相性が悪い」ということが言えると思います。
もし可能であれば、HTMLを含む全ファイルをUTF-8に一括変換するのが、
のちのち妙なエラーに悩まされなくなって精神衛生上楽です。

どうしても端末に対してSJISで出力したいのであれば、PHP の

設定(mbstring.http_outputあたり)で可能です。

ただこれ(一括変換)を実施するにあたり、Webサーバの設定で
文字コードをSJISに設定している(もしくは、明示的には設定
していない)のであれば一箇所直せばいいので楽ですが、HTMLの
コンテンツの中で(METAタグ等で)文字コードを指定している
場合は、そこも変えないといけないですね。

投稿2015/03/03 13:25

hotta

総合スコア1613

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

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

lupus_dingo

2015/03/09 09:11

回答ありがとうございます。 変更を加える部分はなるべくテンプレートファイルのみにしたいので今回は地道にliteralで囲んで行こうと思います。
guest

0

「smarty sjis」でぐぐると以下の記事がありましたので参考になると思います。
エンジニアっぽいブログ : [Smarty] Smartyでsjisがダメな理由

投稿2015/02/26 14:32

blackonyx

総合スコア354

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

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

lupus_dingo

2015/03/01 11:11

回答ありがとうございます。 SJISとtplファイルは相性が悪いみたいですね。 ただ日本語は全く同じ状態で、問題となる日本語と関係ない箇所に{if}~{/if}を入れるとエラーになり、入れないとエラーにならない場合がありました。 これはどんなことが原因と考えられるでしょうか?(ソースが手元にないので例を載せられなくてすみません。)
blackonyx

2015/03/02 01:51

全く推測の域を出ませんが、 >問題となる日本語と関係ない箇所 より前の部分のSJIS文字コードの部分で、俗にいう「文字化け」と同じ原理により「{」ないし「}」を誤検出しているのではないかと思われます。
lupus_dingo

2015/03/09 09:09

なるほど、回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問