Smartyの Syntax Errorの原因はスペースかも
2014/06/26
Smartyのなかなか見つからない Syntax Errorの原因
半角スペースを入れていることでエラーに
Smartyを使っていて、ときどき意味が分からない Syntax Errorに出会うことがあります。
文法は間違っていないはずなのに....どんなに悩んでもエラーが消えない。
そんなあなた!
余計な半角スペースを入れていませんか?
プログラムの記述の仕方は人それぞれ違いますが、PHPのプログラムを書く方の場合は、PHPがスペースもタブも改行も単なるスペースとして処理されるため、スペースを入れて見やすく調整をする方は多いものです。
ですが、そのスペースが Smartyでは Syntax Errorの原因になってしまうために厄介なのです。
Smartyは PHPのテンプレートエンジンにもかかわらず、PHPで使い慣れたいくつかの法則が使えないのです。
その代表的なものがスペースで、下記のような IF文を書くとしましょう。
下記のような記述は問題ないのですが、
—————
|
1 |
{if $aaaa == "yes"}ああああ{/if} |
—————
下記の 2行目の様に上下の文字の位置を合わせるために、「”no”」の後ろにスペースを入れたとします。そうすると、このスペースが Syntax Errorの原因になってしまうのです。
—————
|
1 2 |
{if $aaaa == "yes"}ああああ{/if} {if $aaaa == "no" }いいいい{/if} |
—————
同じように、単純に変数を表示させる際、下記のように変数名の前後にスペースを入れては行けません。下記は正しく表示されます。
|
1 |
{$aaaa} |
ですが、下記の様に「$aaaa」の変数の前後にスペースを入れた場合、これでは表示されなくなってしまうのです。
|
1 |
{ $aaaa } |
|
1 |
{ $aaaa} |
上記の様に前にスペースを入れた場合は、変数として処理されず、「{ $aaaa}」がそのまま表示されます。
|
1 |
{$aaaa } |
上記の様に後ろにスペースを入れた場合は、Syntax Errorになります。
私がそうなのですが、半角スペースを入れてソースコードの見やすさを調整している方はご注意ください。
header(“Location: $url”);を使う際もスペースの取り扱いに注意が必要
2014.04.02追記
同じように PHPでの開発においてスペースの取り扱いに注意が必要なものとして、header(“Location: $url”);があります。
こちらについて「PHP画面が真っ白 header(“Location: $url”);」に記事を書きましたので、併せてご覧ください。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
PHPで特定の日間の日付を for、strtotimeで表示する
ある特定の間の日付の情報を for文、strtotimeを使って作成し、その解説をしています。
-
-
PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法
「PHP スクレイピング」で検索すると「phpQuery」ばかりヒットするが、10年以上も放置されている。なので今も開発が続いている「PHP Simple HTML DOM Parser」をオススメする。
-
-
SEO対策用タイトル、ディスクリプションの文字数カウントツール
SEO対策に使える文字数カウントツールで文字数の条件の説明も行っています。
-
-
PHP画面が真っ白 header(“Location: $url”);
PHPの開発で header(“Location: $url”);を使うと画面が真っ白になる不具合が出る場合もあります。
-
-
ECCUBEの商品一覧ページのSEO対策!rel=”next” rel=”prev”を設定
Googleは関連あるページはその旨明示するよう求めています。ECCUBEの商品一覧ページでその求めに応じるための「rel=”next”」「rel=”prev”」について解説します。
-
-
ECCUBEでカード決済NGの受注情報をマイページ購入履歴に表示しない方法解説
ECCUBEでカード決済に失敗しても購入履歴一覧に注文情報(受注情報)が表示される問題への対処方法を解説。受注情報レコードの作成の流れとステイタスについても解説。
-
-
指定した数で文字列を丸める(n文字目で…にする)関数substr、mb_substr、mb_strimwidthの違い
文字列を指定された数で抜き出すPHPの関数、substr、mb_substr、mb_strimwidthについての解説。似た関数だが引数の指定方法が違ったり、文字数がバイト数か文字数かも違ったり、注意が必要だ。
-
-
AdminerはphpMyAdmin代替のデータベース管理ツール
AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。
-
-
ob_start、ob_get_contents関数でPHPの標準出力をバッファリング・変数に代入
標準出力をバッファリングし変数に代入することができるob_start()関数の解説。include()の処理をバッファリングすることで自由な場所に処理を記述することが可能。
-
-
ECCUBE mtb_constants initパラメータ設定の項目を追加する方法
ECCUBEのパラメータ設定で設定できる項目を追加する方法を説明します。
Comment
参考になりました!ありがとうございます!