エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Smartyの Syntax Errorの原因はスペースかも

      2014/06/26

Smartyのなかなか見つからない Syntax Errorの原因

 

半角スペースを入れていることでエラーに

 
Smartyを使っていて、ときどき意味が分からない Syntax Errorに出会うことがあります。
文法は間違っていないはずなのに....どんなに悩んでもエラーが消えない。
 
そんなあなた!
 余計な半角スペースを入れていませんか?
 
 
プログラムの記述の仕方は人それぞれ違いますが、PHPのプログラムを書く方の場合は、PHPがスペースもタブも改行も単なるスペースとして処理されるため、スペースを入れて見やすく調整をする方は多いものです。
 
ですが、そのスペースが Smartyでは Syntax Errorの原因になってしまうために厄介なのです。
Smartyは PHPのテンプレートエンジンにもかかわらず、PHPで使い慣れたいくつかの法則が使えないのです。
 
その代表的なものがスペースで、下記のような IF文を書くとしましょう。
下記のような記述は問題ないのですが、
 
—————

—————
 
下記の 2行目の様に上下の文字の位置を合わせるために、「”no”」の後ろにスペースを入れたとします。そうすると、このスペースが Syntax Errorの原因になってしまうのです。
—————

—————
 
 
同じように、単純に変数を表示させる際、下記のように変数名の前後にスペースを入れては行けません。下記は正しく表示されます。

 
ですが、下記の様に「$aaaa」の変数の前後にスペースを入れた場合、これでは表示されなくなってしまうのです。

 

上記の様に前にスペースを入れた場合は、変数として処理されず、「{ $aaaa}」がそのまま表示されます。
 

 
上記の様に後ろにスペースを入れた場合は、Syntax Errorになります。
 
 
私がそうなのですが、半角スペースを入れてソースコードの見やすさを調整している方はご注意ください。
 
 

header(“Location: $url”);を使う際もスペースの取り扱いに注意が必要

 
2014.04.02追記
 
同じように PHPでの開発においてスペースの取り扱いに注意が必要なものとして、header(“Location: $url”);があります。
こちらについて「PHP画面が真っ白 header(“Location: $url”);」に記事を書きましたので、併せてご覧ください。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Comment

  1. takaki jun より:

    参考になりました!ありがとうございます!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法
PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法

「PHP スクレイピング」で検索すると「phpQuery」ばかりヒットするが、10年以上も放置されている。なので今も開発が続いている「PHP Simple HTML DOM Parser」をオススメする。

ファイル変更だけ!ECCUBEの本番から開発環境をコピーする手順を解説

ECCUBEを本番から開発環境をコピーする際の手順を解説。PGMメンテに必要な開発環境を構築する手順を解説。ECCUBEの仕組みは簡単なので作業は5分ほど。

cURLを利用する際の注意点「&」があるURLは「"」で囲む
cURLを利用する際の注意点「&」があるURLは「」で囲む

cURLでURLはダブルクォーテーションで囲む。LinuxでもWindowsでもコマンドでは「&」は意味を持つ文字のためエラー原因になる。クォーテーションは常につけておく方が無難。

数値文字参照コード変換ツール(HTML特殊文字コード変換ツール)

テキストを数値文字参照コード(特殊文字コード)に変換するツール。テキストを数値文字参照コードに簡単変換。数値文字参照、文字実体参照、特殊文字などの違いも解説。

Basic認証の.htaccess、.htpasswd生成ツールと解説

Basic認証を設定する際に必要となる.htaccess、.htpasswdファイルを生成するツール。ID、PASS、.htpasswdへのパスを入力することで編集する情報を生成します。

ECCUBEでアップロードできない。upload_max_filesizeを設定する場所

テンプレートをアップロードする際に発生するエラー「テンプレートファイルがアップロードされていません」の対処方法。これはファイル容量の制限に引っかかっています。

PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方
PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方

PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方を解説。要素を取得する方法、そこから属性を取得する方法を解説。また、マニュアルにはない注意点なども解説。

PHPで APIにアクセスする際などに使用する cURLのサンプルプログラム
PHPで APIにアクセスする際などに使用する cURLのサンプルプログラム

PHPのcURLを使用して各種APIにアクセスするサンプルプログラムを作成し、その処理を解説。カオナビAPIのみならず、他の多くのAPIにアクセスする際にも使用できる。

PHPパーミッション変更のchmod関数・モードを変数で指定する方法

パーミッション変更関数であるchmod関数の第二引数、ファイルモードの指定に変数を使う場合は8進数に変換するoctdec関数を使って変換します。

ECCUBEの管理画面のSSL設定をインストール後に変更する方法

ECCUBEをインストールした後から管理画面のSSL設定を変更する方法を解説します。config.phpファイルのHTTPS_URLとADMIN_FORCE_SSLの値を変更すればOK。