syntax errorの正体は不可視文字だった
よくあることなのだろうか?
厄介なトラブルなのでメモっとく。
WordPressでテンプレートを編集していた。
画像が存在する場合はそれを表示して、存在しない場合はダミー画像を表示する。
下記のようなコードを書いた:
// プログラム画像
$img_url = '';
$upload_dir = wp_upload_dir();
$file_path = $upload_dir['basedir'] ."/images/{$pg_number}.jpg";
if ( file_exists( $file_path ) ) {
$img_url = home_url( "/images/{$pg_number}.jpg" );
} else {
$img_url = home_url( "/images/dummy.jpg" );
}
特段難しいことではないし、コードもシンプル。
だが、なぜかfile_existsの行でsyntax errorになる。
file_exists Fatal error: syntax error, unexpected '' (T_STRING), expecting ')'

file_existsに渡っている値がおかしいのか、そもそも使い方が間違っているのか、など小一時間Webを彷徨ってたどり着いたのは、不可視文字によるいたずら(?)だった。
file_existsの行をカーソル移動していくと、$file_pathの後の閉じ括弧の手前で、カーソルが足踏みする…二度点滅する。Codaで不可視文字を表示しても何も表示されない(画像ほぼ中央)。
この時点で不可視文字のせいだと気づいたので、Shift+矢印キーで選択&コピーし、Macの文字ビューアにペーストしてみると
OBJECT REPLACEMENT CHARACTER
Unicode: U+FFFC, UTF-8: EF BF BC
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1240887022
…日本語だと「〓」みたいなものらしい。表示はできないが、そこに文字はある。
どこかからコピペした記憶もないのだが、どこで混じってしまったのだろう。。。
不可視文字による不具合は過去何度か経験しているが、「不可視文字を表示」しても見えないやつに遭遇したのは初めてだ。
厄介なのは、手元のローカル環境ではとくに不具合は出なかったのに、サーバにアップしたらsyntax error発生。
むしろそれがヒントだったのか?
カーソル合わせて、deleteで解決。
Author And Source
この問題について(syntax errorの正体は不可視文字だった), 我々は、より多くの情報をここで見つけました https://qiita.com/fe_miyazawa/items/191b5c1e8c5cadd72495著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .