人に聞けない痔の悩み、これでスッキリ >>

PHP+smartyでサイトを作成し始めました。(以下URL)
http://babyitem.info/

PHPファイル、テンプレート共に、文字コードはEUCで作成しています。
サーバーは、ロリポップをレンタルしています。

index.phpは以下の通りです。
-----------------------------------------------------------
<?php
$contents_title="ベビーアイテム.info";
$tpl->assign("contents_title",$contents_title);

$tpl->display("babyitem.tpl");
?>
-----------------------------------------------------------


babyitem.tpl(上記サイト左の部分)は以下の通りです。
-----------------------------------------------------------
<div id="left">
<div class="left_top">{$contents_title}</div>
<div class="left_bottom"></div>
</div>
-----------------------------------------------------------


テンプレートファイルの{$contents_title}に
「ベビーアイテム.info」という文字をassignしているのですが、
文字化けして表示されてしまいます。


ちなみに、「babyitem.info」という文字をassignすると、
そのまま、「babyitem.info」と表示されます。


正しく表示する為には、どの辺りの設定を確認すれば良いでしょうか?
ご教授くださいませ。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちわ。



PHPの内部エンコーディングの問題かな?

mb_detect_encoding($contents_title);
とすると、文字コードは何になっていますでしょうか?
>mb_detect_encodingの解説
http://jp.php.net/mb_detect_encoding

もしこれがEUCでなかったら、エンコードの必要がありますね。

この回答への補足

babyitem.tpl(上記サイト左の部分)におきまして、
修飾子(?)に”|smarty:nodefaults”を追記しましたところ、
文字化けせずに表示させることができました。

-----------------------------------------------------------
<div id="left">
<div class="left_top">{$contents_title|smarty:nodefaults}</div>
<div class="left_bottom"></div>
</div>
-----------------------------------------------------------

これは根本解決になっていませんが、
これで、何か問題箇所が見えますでしょうか?

補足日時:2007/07/14 01:10
    • good
    • 0
この回答へのお礼

ご回答いただき、ありがとうございます。

ご指摘いただきました関数で、
文字エンコーディングを表示して確認してみましたところ、
「EUC-JP」と表示されました。

文字コードを確認する関数があったんですね。
勉強になりました。

ご回答いただき、ありがとうございました。
他に確認すべき箇所があるようでしたら、
またご指摘いただけますよう宜しくお願いします。

お礼日時:2007/07/14 00:13

Smartyは2年ほど前にセットアップしてから


それを使い回しているので、もしかしたらVersionUPなどで
変わったのかもしれませんが…。
$tpl->
の部分は
$smarty->
ではないでしょうか?

まったく自信ありませんが…。


それよりも、ソースを拝見するときちんと最後まで排出されていないようですね。
その辺をもう一度チェックなされてはいかがですか?
    • good
    • 0
この回答へのお礼

ご回答いただき、ありがとうございます。

smartyを定義しているPHPファイルをincludeしていますが、
そこでは、以下のように宣言しています。

---------------------------------------------------
require_once("Smarty.class.php");
$tpl = new Smarty;
---------------------------------------------------

ご指摘いただきましたSmartyの変数名を確認しましたが、
ここは問題なさそうです。


また、最後までソースが排出されていなかった件ですが、
最後の</body>まで排出されるよう修正いたしました。


ご回答いただき、ありがとうございます。
他にも確認すべき箇所がございましたら、ご教授いただければと思います。

お礼日時:2007/07/14 00:08

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QPHP(smarty)についての質問(文字化け)

あるサイトでsmartyを勉強中ですが、そのサンプルファイルを実行したところ、
文字化けが発生して困っています。

・form.php←お問い合わせ用テンプレートファイルの指定
・form.tpl←お問い合わせ情報を入力させるテンプレートファイル
・template.tpl←テンプレートファイルを表示させるテンプレートファイル

form.phpから、お客様情報を入力させるためのテンプレートファイル(form.tpl)を指定し、
template.tplにそれを表示させるのが処理概要です。

実行すると、タイトルの"問い合わせフォーム"は表示されますが、
それ以下のform.tplの日本語部分が文字化けします。

template.tplで{include file=$content_tpl params=$params}の処理で
form.tplを取り込んでいますが、その時文字コードがおかしくなっている気がします。
form.tplに対して文字コード(UTF-8)が有効になっていないと思われます。

実験的に、{include file=$content_tpl params=$params}を削除して、
そこにform.tplの記載をすべて記述すると文字化けは起こりませんでした。
文字コードの指定をform.tplに対しても有効にするにはどのように修正すればよろしいでしょうか。

以下にソースファイルを記載します。

★form.php
<?php
// 共通の設定を読み込む
require_once( 'common.php' );

// Smartyオブジェクト取得
$smarty =& getSmartyObj();

// ひな形のSmartyテンプレートでincludeするテンプレートを指定
$smarty->assign( 'content_tpl', 'form.tpl' );

// パラメータを渡す
$smarty->assign( 'params', array(
'types' => array(
'request' => '意見、要望',
'question' => '質問、問い合わせ',
'other' => 'その他'
)
) );

// ページを表示する
$smarty->display( 'template.tpl' );
?>


★form.tpl
<p>お問い合わせやご意見・ご要望を以下のフォームにご記入の上ご送信ください。</p>

<form method="post" action="post.php">
<dl>
<dt>お名前</dt>
<dd>
<input type="text" name="name"
value="{$params.name|escape:'html':'UTF-8'}" />
{if $params.errors.name}
<p class="error-message">名前を入力してください。</p>
{/if}
</dd>

<dt>メールアドレス</dt>
<dd>
<input type="text" name="address"
value="{$params.address|escape:'html':'UTF-8'}" />
{if $params.errors.address}
<p class="error-message">アドレスが不正です。</p>
{/if}
</dd>

<dt>お問い合わせ種類</dt>
<dd>
{html_options name="type" options=$params.types selected=$params.type}
{if $params.errors.type}
<p class="error-message">お問い合わせ種類が不正です。</p>
{/if}
</dd>

<dt>お問い合わせ件名</dt>
<dd>
<input type="text" name="title"
value="{$params.title|escape:'html':'UTF-8'}" />
{if $params.errors.title}
<p class="error-message">件名を入力してください。</p>
{/if}
</dd>

<dt>お問い合わせ内容</dt>
<dd>
<textarea name="content" cols="60" rows="5">
{$params.content|escape:'html':'UTF-8'}
</textarea>
{if $params.errors.content}
<p class="error-message">お問い合わせ内容を入力してください。</p>
{/if}
</dd>
</dl>

<input type="submit" value="送信する" />
</form>

★template.tpl
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>問い合わせフォーム</title>
<style type="text/css">
{literal}
.error-message{ margin:5px; font-size:80%; color:red; }
{/literal}
</style>
</head>

<body>
<h1>問い合わせフォーム</h1>
{include file=$content_tpl params=$params}
</body>

</html>

★common.php
<?php
define( 'SMARTY_DIR', 'C:/xampp\php/smarty/libs/' );
require_once( SMARTY_DIR .'Smarty.class.php' );

// Smartyオブジェクト取得
function & getSmartyObj()
{
static $smarty = null;

if( is_null( $smarty ) ){
$smarty = new Smarty();
$smarty->template_dir = 'C:/xampp/php/smarty/templates/';
$smarty->compile_dir = 'C:/xampp/php/smarty/templates_c/';
$smarty->config_dir = 'C:/xampp/php/smarty/configs/';
$smarty->cache_dir = 'C:/xampp/php/smarty/cache/';
}

return $smarty;
}
?>

あるサイトでsmartyを勉強中ですが、そのサンプルファイルを実行したところ、
文字化けが発生して困っています。

・form.php←お問い合わせ用テンプレートファイルの指定
・form.tpl←お問い合わせ情報を入力させるテンプレートファイル
・template.tpl←テンプレートファイルを表示させるテンプレートファイル

form.phpから、お客様情報を入力させるためのテンプレートファイル(form.tpl)を指定し、
template.tplにそれを表示させるのが処理概要です。

実行すると、タイトルの"問い合わせフォーム"は表示されます...続きを読む

Aベストアンサー

3種類のファイルのエンコードはどうなっていますか?

QParse error: syntax error, unexpected T_STRING in・・・118と出るのですが

Parse error: syntax error, unexpected T_STRING in 。。。 on line 118
とでるのですが対処はどうすればよろしいでしょうか?

Aベストアンサー

118行目をみてみてください。
ダブルクォーテーションのなかでダブルクォーテーションを使ったり
してませんか?
基本的な文法ミスなので、自己解決できないと今後きびしいですよ。

QPHPでjavascriptのalert文のようにデバッグ

こんにちは

現在、Flash からPHPにデータを渡して、それがPHPにわたっているかどうかを調べたいのですが、echo文などで出力してもそれがブラウザで表示されないので、どうしたらよいかわかりません。。。orz

javascriptのalert文のように警告ウィンドウを利用して変数の値などを調べる関数はあるのでしょうか?
また、なにか他によい方法がありましたら教えていただけるとありがたいです。

よろしくお願いします

Aベストアンサー

var_dump(変数)

echo で値が出ないということは、おそらく値が null もしくは空文字だと思います。

参考URL:http://jp.php.net/manual/ja/function.var-dump.php


人気Q&Aランキング