Smartyで foreachやsection でループした場合の無駄な半角スペース

2007年1月19日 オフ 投稿者: KYO
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出力してるせいかなぁ・・・