Smartyで foreachやsection でループした場合の無駄な半角スペース
2007年1月19日Table of Contents
つい最近気付いたんですが、Smarty内のforeachを利用すると、Smarty内部で半角SPを自動で吐き出している模様。
特殊な環境だけで起こるかもしれないので、再現方法っぽいことをメモ。
テンプレート -template.tpl-
Home»URL»URL»URL って感じのおなじみのパンくずリスト
{* topicpath(breadcrumb) *} <a href="#">Home</a> {section from=$data item=data} {if $data.url ne ''} »<a href="{$data.url}" title="{$data.title}">{$data.title}</a> {else} »{$data.title} {/if} {/section}
PHP -breadcrumb.php-
<?php require_once('Smarty/Smarty.class.php'); $output_page = new MySmarty(); $topicpath = array( array('title' => 'タイトル1', 'url' => 'url1'), array('title' => 'タイトル2', 'url' => 'url2'), array('title' => 'タイトル3', 'url' => 'url3'), ); $output_page->assign('DATA', $topicpath); $output_page->display("breadcrumb.tpl"); ?>
結果
Home»URL»URL»URL ってなって欲しいんですが・・・
Home »URL »URL »URL と・・・無駄な半角SPが挿入される。。。
なぜ?
とりあえず、支障はないので後日調査。
試しに、sectionでテストしても同様。スクリプトとSmartyのテンプレートをEUCで作成して、テンプレート出力時にmb_http_output() でUTF-8出力してるせいかなぁ・・・