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
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
QRコード(二次元バーコード)作成サービスを公開
QRコード(二次元バーコード)を生成するサービス。QRコードにする文字列を入力するだけで QRコードが簡単に作れる。オプションとして、画像サイズ、余白サイズ、エラー訂正レベルがある。
-
-
ECCUBEの問い合わせフォームに任意の値を引数として渡す方法
ECCUBEのお問い合わせフォームに値を固有の情報を送りそれに基づいて処理をする方法を解説。ボタンの設置、受け取り側のテンプレート、プログラムのサンプルソースを提供。
-
-
PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法
「PHP スクレイピング」で検索すると「phpQuery」ばかりヒットするが、10年以上も放置されている。なので今も開発が続いている「PHP Simple HTML DOM Parser」をオススメする。
-
-
ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある
2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。
-
-
Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説
お問い合わせ等のメールフォームから送ったメールがスパム扱いされる!その対策としてライブラリ「Phpmailer」を使う方法を解説。関数化していますのでコピペでOK。
-
-
XML形式の値を配列形式に変換・PHPでは simplexml_load_string()
XMLとは「Extensible Markup Language」の略でテキストベースのデータフォーマット。XMLをPHPで配列に変換するWebツールの紹介とその処理「simplexml_load_string()」関数についての解説。
-
-
PHPのソースで見慣れない記号が出てきた・アロー演算子(->)、ダブルアロー演算子(=>)
PHPのプログラムソースには見慣れない記号が出てきます。その意味や調べ方です。
-
-
CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説
CentOS6系、7系のPHPバージョンを5.3から5.6、7.0、7.1にアップする作業手順と解説。yum updateコマンドを使い作業時間は約10分。コマンドの解説や引数の意味なども解説しているので役に立つはず。
-
-
PHPパーミッション変更のchmod関数・モードを変数で指定する方法
パーミッション変更関数であるchmod関数の第二引数、ファイルモードの指定に変数を使う場合は8進数に変換するoctdec関数を使って変換します。
-
-
PHPのデバッグで使う print_r、var_dump、var_exportの動作の違い
PHPのデバッグ等で変数や配列の中身を確認するために使用する関数print_r、var_dump、var_exportの動作の違い、仕様の違いについて確認した。var_exportがオススメ。
Comment
参考になりました!ありがとうございます!