• 締切済み

HTML_Template_Sigma

HTML_Template_Sigma を使って、テンプレートを作っています。 下記に、使用中のソースとテンプレートを示します。 data_list ブロック内で表示する {title} {date} をそのまま表示したいのですが、それぞれ、タイトル、日付、に置換されてしまいます。何か解決策はないでしょうか? ==== sigma_test.php ==== <?php require_once "HTML/Template/Sigma.php"; $tpl =& new HTML_Template_Sigma(dirname(__FILE__)); $tpl->loadTemplateFile("sigma_test.html", false, true); $hoge = array('{title}','ほげ','{date}',); foreach ($hoge as $data){ $tpl->setVariable('data_list',$data); $tpl->parse('data_list'); } $tpl->setVariable('title',"タイトル"); $tpl->setVariable('date',"日付"); $tpl->setVariable('body',"本文"); $tpl->show(); ?> ==== sigma_test.html ==== <?xml version="1.0" encoding="EUC-JP"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>メモ</title> </head> <body> <div id="content"> <div id="head"></div> <div id="menu"> <ul> <!-- BEGIN data_list --> <li><a href="">{data_list}</a></li> <!-- END data_list --> </ul> </div> <div id="main"> <dl> <dt>タイトル</dt> <dd>{title}</dd> <dt>日付</dt> <dd>{date}</dd> <dt>本体</dt> <dd>{body}</dd> </dl> </div> </div> </body> </html>

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • fire--
  • ベストアンサー率49% (146/293)
回答No.1

phpというよりhtmlの問題ですね。 最初の変換をする時に、文字参照にすれば良いのでは? $hoge = array('{title}','ほげ','{date}',);

hogemodoki
質問者

お礼

そうですね。 質問を投稿した直後、自分でも気が付き・・・・(^^; 以下のようにしました。 foreach ($hoge as $key => $data){ $frm = array('{','}'); $to = array('{','}'); $hoge[$key] = str_replace($frm,$to,$data); }

関連するQ&A

  • phpの外部読み込みで半角ハテナがでる

    初歩的な質問内容なのかもしれませんが、宜しくお願いします。 phpの外部読み込みをすると半角ハテナがでてきてしまいデザインが崩れてしまいます。 下記がソースです。 【index.php】 <?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title></title> </head> <body> <?php include("information.php"); ?> </body> </html> 【information.php】 <div id="infomation" class="scroll"> <h3><span class="red">更新履歴</span></h3> <dl> <dt>サイト作成開始<span class="new">New!!</span></dt> <dd>07年05月04日:管理人の閃きで作成。</dd> </dl> </div> 上記のように本当にシンプルなソースといいますか・・・ この感じでindex.phpにinformation.phpを呼び出すと 【index.php】 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title></title> </head> <body> ?<div id="infomation" class="scroll"> <h3><span class="red">更新履歴</span></h3> <dl> <dt>サイト作成開始<span class="new">New!!</span></dt> <dd>07年05月04日:管理人の閃きで作成。</dd> </dl> </div> </body> </html> という結果になり半角ハテナが入ってしまいます。 この現象がでるのはInternetExplorerとOperaでアクセスした場合です。 Firefoxの場合はこの現象は現れませんでした。 この半角ハテナを出なくする方法はありませんでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • [textarea要素]FirefoxやIEの挙動

    当方環境IE6 & Firefox[Trunk-バージョン不明] ===========サンプルソース開始================= <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>ほげ</title> </head> <body> <form method="post" action="mailto:hogehoge@example.com?subject=Question"> <fieldset> <legend>ご質問内容</legend> <dl> <dt>内容</dt> <dd><textarea name="Questionare-Content" id="Questionare-Content" rows="10" cols="100" /></dd> </dl> </fieldset> <div id="submitcommand"><input type="submit" name="btnsubmit" value="送信" /></div> </form> </body> </html> ===========サンプルソース終了=========== ■拡張子を.xhtmlとして読み込ませた所、(多分)正常に表示されました。 ■.htmlにして読み込ませたところ、「textareaの内容として「他のタブ含めた文字列」が入っている状態」で認識されてしまいました。 ■なお、IEはこの.xhtmlだと読み込んでくれないので(DTDのパースエラー)拡張子.htmlのみで実験したところ、Firefoxと同様の現象となりました。 確かにXHTML 1.1はtext/htmlはあまり【推奨されていない】ようですが...どこかにこれらの動作について(Firefoxは「違い」について)述べている文書はありますか?

    • ベストアンサー
    • HTML
  • cssの指定の横幅よりテキストがはみ出てしまう

    cssの指定の横幅よりテキストがはみ出てしまう 下記のとおり指定したのですが、winIE6.0だとwidthに収まるのに、FirefoxやNetscape 7.0 だと外にはみ出てしまい、横幅内に改行してくれません。 すみませんが、教えて下さい。 tate.css--------------------- #question { margin: 10px; padding: 3px; width: 560px; } #question dl{ margin: 10px; } #question dt{ color: #90B77F; font: 0.8em "MS ゴシック", Osaka, sans-serif; } #question dd{ font: 0.8em "MS ゴシック", Osaka, sans-serif; margin-left: 30px; } #question p { margin-bottom: 1em; font: 0.8em "MS ゴシック", Osaka, sans-serif; } --------------------------------- test.htm--------------------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>試し</title> <link href="tate.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="question"> <dl> <dt>質問:○○○○○○○○○○○○○○○○○○○○</dt> <dd>回答:○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○ ○○○○○○○○○○○○○○○○○○</dd> </dl> </div> </body> </html>

    • ベストアンサー
    • HTML
  • HTML文法

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title></title></head> <body> <dl> <dt>aaa <dt>aaaa <dt>aaaaa </dl> </body> </html> のdl~が http://openlab.ring.gr.jp/k16/htmllint/htmllint.html で間違いではないのはなぜですか?

  • ブラウザ上部に余白があります。

    近い現象はありましたが、解決出来なかったのでご質問させて頂きます。 下記のソースでhtmlを制作しましたが、#headerの上に余白があります。 どうすればこの余白をとる事が出来るでしょうか? お教え頂ければと思います。 ↓ソース↓ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>無題ドキュメント</title> <style type="text/css"> <!-- html, body{ margin:0; padding:0; } div#header{ background-color: #F00; margin:0px; padding:0px; } --> </style> </head> <body> <div id="header"> <h1>test</h1> </div> </body> </html>

  • HTMLの書き方について質問です(初心者)。

    [HTML & スタイルシート トレーニングブック]という本を見ながらHTMLを勉強中です。 この本ではHTMLの書き出し部分は下記のようになっております。 ================================================================================== [ 1 ] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 [ 2 ] Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> [ 3 ] <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> [ 4 ]<head> [ 5 ]<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> [ 6 ]<title>Osteria Grazie[イタリア料理の店]</title> [ 7 ]<link href="message.css" rel="stylesheet" type="text/css" /> [ 8 ]</head> ================================================================================== ところがこのままテキストで書き写し使用しても正しく表示されません。 (具体的に言うと感じやひらがなが文字化けしてしまいます。) こちらの [ 5 ] を下記のように修正すると正しく出力することができます。 ================================================================================== [ 5 ]<meta http-equiv="Content-Type" content="text/html; charset="utf-8" /> ↑[ここに[ " ]を書き加える。 ================================================================================== ただし、サンプルディスクに入っているhtmlデータは上記のままで動きます。 どうしてなのでしょうか? 分かる方がいらっしゃいましたら回答お願いします。 また、修正後の ================================================================================== [ 5 ]<meta http-equiv="Content-Type" content="text/html; charset="utf-8" /> ↑[ ? ] ↑[ここに[ " ]を書き加える。 ================================================================================== につきましても、これで正しく表示されるのはいいのですが、そうなると上記の[ ? ]部分の[ " ]の閉じ部分がなくなってしまう気がするのですが、なぜこれで動くのでしょうか? よろしくお願いします。 一応下に本に付いていたサンプルデータを書き出しておきます。 分かる方がいらっしゃいましたらお願いします。 【サンプルデータ】 ================================================================================== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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>Osteria Grazie[イタリア料理の店]</title> <link href="message.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="contents"> <h1>Message</h1> <h2>ご意見ご感想をお書きください</h2> <form action="mailto:sotechsha@html.sever" method="post" enctype="text/plain"> ■名前<br /> <input type="text" name="name1" size="30" /><br /> ■メールアドレス<br /> <input type="text" name="email" size="30" /><br /> ■メッセージをお願いします<br /> <textarea name="message" rows="6" cols="50"></textarea><br /> </form> <div id="gotop"> <a href="index.html">Topページにもどる</a> </div> </div> </body> </html> ==================================================================================

    • ベストアンサー
    • HTML
  • [PHPとHTML]リストボックスについて質問です。

    [PHPとHTML]リストボックスについて質問です。 ///////a.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>リストボックス</title> </head> <body> <form id="form1" name="form1" method="post" action="b.php"> <label> <select size="1" name="num" id="num"> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </label> </form> </body> </html> ///////b.php if ($_POST['num'] == "2" or $_POST['num'] == "3" or $_POST['num'] == "4") { ※↑ここの部分がエラーとなっています。 $num = $_POST['num']; echo "$num"; echo '<a href="a.php">戻る</a>'; } ラジオボタンを使っての判定条件の仕方はわかったのですが、 リストボックスについてはどうすればいいのかわかりません。 どうしたらいいか教えてもらえませんか?

    • ベストアンサー
    • PHP
  • Operaでズレない方法をご指導下さい

    IE6、firefox1.5ではズレないのですが、 Opera9.1.0では <div id="main">テキスト</div> の箇所が左に1pxズレてしまします。 ブラウザの横幅を大きくしたら小さくしたりすると、 ズレない場合もあるのですが、最大にすると1pxだけズレます。 ズレない良い方法がありましたら、どうか教えて下さい。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>無題ドキュメント</title> <style type="text/css"> <!-- body { background-image: url(bg.jpg); background-repeat: repeat-y; background-position: center top; margin: 0; } #main { background-color: #00FFCC; width: 700px; margin:0 auto; } --> </style> </head> <body> <div id="main">テキスト</div> </body> </html>

  • web初心者、会社hpに今日中にメールフォーム設置

    web初心者で、会社のホームページに今日中にメールフォームを 設置しなければならず、困っています。 テキストを見ながら簡単なフォームを作り、 テストとしてFTPにアップロードしました。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無題ドキュメント</title> </head> <body><h1>お問い合わせ</h1> <form action="mailto:info@lacasatokyo.jp" method="post"> <dl><dt><label for="name">お名前</label></dt> <dd><input type="text" size="50" name="お名前" id="name" value="" /></dd> <dt><label for="email">Email</label></dt><dd><input type="text" size="50" name="Eメール" id="email" value="" /></dd> <dt><label for="comment">ご相談・ご質問</label></dt><dd><textarea name="ご相談・ご質問" id="comment" rows="7" cols="50"></textarea></dd></dl> <p><input type="submit" value="送信する" /></p> </form></body></html> フリーシェアのcgiを設置しようかとは考えましたが、 設置方法がいまいちわからず、強引にactionをmailtoで やってみましたが、すぐにメールソフトが立ち上がり、 通常のメール画面に・・・・ しかも、内容文が文字化けしている状態。 やはりcgiをつけなくては駄目なんでしょうか。 もしだめなら、初心者でも本当に簡単なcgi,(できれば無料) 教えていただけませんか。 社内で詳しいものがおらず、苦しんでいます。 どうか助けてください。

  • PHP(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; } ?>

    • ベストアンサー
    • PHP