質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

1045閲覧

「<?php}」ではエラーが出ますが「<?php }」ではエラーが出ません

abustoy

総合スコア12

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

0クリップ

投稿2021/09/21 07:32

前提・実現したいこと

htmlファイルにphpのif文を埋め込もうとしたときに、}の前にphpの開始タグを書く際、

<?php} ではエラーが出ますが <?php } と半角スペースをあけるとエラーが出ませんでした。 わたしはどちらもphpの書き方上問題ないと思ったのでエラーは出ないと思ったのですが、なぜエラーが生じるのでしょうか? ### 発生している問題・エラーメッセージ ``` Parse error: syntax error, unexpected end of file in /work/web/index.php on line 11 ``` ### 該当のソースコード ```php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>PHP Practice</title> </head> <body> <?php if(1){?><?php}

// 上の行のことです
?>

</body> </html> ```

補足情報(FW/ツールのバージョンなど)

文字コードはUTF-8です

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

回答では無いです。
非常に面白い質問ですね。
少し実験をしてみました。

php

1<?$test="hoge"; ?> 2<?echo $test;?> 3<?=$test?>
hogehoge

<?php以外のタグは、特にスペース等は必要ないようです。

現象から判断すると先についている2件の回答で正しいですが、ドキュメント上に上記の仕様について触れている箇所が探せなかったので、多分、php のコードを漁らないと厳密な仕様は分からないかなぁ。。。

投稿2021/09/21 09:12

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2021/09/21 11:26

「<?php();」「<?php;」でもエラーは出ないようです。
退会済みユーザー

退会済みユーザー

2021/09/21 21:15

あれ?単体だとエラー出ません? やってみたところ、‘<?php‘ じゃなくて ‘<?` で解釈されてるっぽいですね。 ```php <?php function php(){echo "test";} ?> <?php(); ``` だと、`test`となりました。 ``` <?php define("php", ""); if(true){ ?> <?php;} ``` は、動きますね。 `<?php}`を何とかして動かしたいw
kei344

2021/09/22 02:31

> やってみたところ、‘<?php‘ じゃなくて ‘<?`で解釈されてるっぽいですね。 確かにそう解釈もできそうですね。(エラーを見るためだけなのでオンラインエディタでエラーだけ見てました) https://3v4l.org/ptKGD
guest

0

PHPマニュアルより

PHP はファイルを解析して開始タグと終了タグ (<?php と ?>) を探します。

くっつけてしまうと<?php} 
という文字列に対する評価になるので同じではありません。
PHPタグはそれだけ特別な意味を持ちます。

思うのは個人の自由ですが、実行してエラーが出たらそれが「事実」で「仕様」なので、納得すべきと思います。

投稿2021/09/21 08:08

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

abustoy

2021/09/21 08:12

ご回答ありがとうございます。私も「<?phpfor」とかかけないなと思いました。PHPマニュアルも添えていただいて、丁寧に説明していただきありがとうございました。
m.ts10806

2021/09/21 08:50

仕様確認は常にPHPマニュアルです。
guest

0

ベストアンサー

「<?PHP」の直後に空白文字(スペース、改行)が最低1つは必要です

投稿2021/09/21 07:58

yambejp

総合スコア116736

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

abustoy

2021/09/21 08:07

ご回答ありがとうございます。すみません。言われてみれば当たり前ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問