• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpの記述について)

phpの不可思議な記述について

このQ&Aのポイント
  • phpのソースコード記述についてご質問です。一般的な書式とは異なっている部分が気になります。
  • phpの不可思議な記述があり、その構造や書き直し方、メリット・デメリットについて教えてください。
  • phpのソースコードにおける特殊な記述について、一般的な書式との違いや書き直し方について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

「<?PHP ?> の外はそのまま」というのがPHPの仕様です。 <?php if (isset($error)) { ?> エラーです <?php } ?> は <?php if (isset($error)) { echo 'エラーです' } ?> と同じです。 {と}の間に大量のHTMLを書く時等は、echoとかでいちいち出力させるより楽です。 このあたりの説明は、PHPの学習書とかを読めば載っています。 http://php.net/manual/ja/language.basic-syntax.phpmode.php マニュアルにも載っています。 たしかにちょっと違和感のある書き方ですが、正しい書き方です。 また、if等には {} 以外の記述方法があります http://php.net/manual/ja/control-structures.alternative-syntax.php こちらの方が違和感は少ないのではないでしょうか。 以上より ・そもそもどんな構造なのか →前述の通り。 ・どう書き直すのが良いか(整形ツール等々あれば) → 書き直す必要は無い。あえて直すなら 別の構文を使う。 ・なんでこの記述をするのか(メリット/デメリットはないのか) → メリット: 大量にechoとかを並べなくて済む 文字列の書き方に悩まないで済む   src="image.jpg" と書こうとすると、 \"とするとか、'で囲うとかを考える必要があるが、HTMLならそのまま書ける。 デメリット: 慣れないと違和感がある 多用すると、PHPとそうで無い部分との切り分けがわかりづらい。

Search_tmp
質問者

お礼

的確な回答を賜りありがとうございました! > こちらの方が違和感は少ないのではないでしょうか。 確かにご提示いただいたソースの方がしっくりきました。 不慣れな上に、更に見慣れないものを見て、疑念を抱いた次第です。 ご丁寧なお返事で大変為になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4851/10265)
回答No.1

別におかしくは無いと思いますけど、どのあたりがおかしいとお思いでしょうか? >・そもそもどんな構造なのか どのあたりで引っかかっておられるのか、よくわかりません。 >・どう書き直すのが良いか(整形ツール等々あれば) 書き直しようが無いと思います。 >・なんでこの記述をするのか(メリット/デメリットはないのか) 強いていれば、他に書きようが無いから?

Search_tmp
質問者

補足

お付き合いありがとうございます! 意図がうまくお伝えできず、申し訳ありません! 例えば、 <?php if( strlen($title)>0){ ?><h3><?php echo $title?></h3><?php } ?> という条件文があるのですが、 一般的な記述は、 https://www.scollabo.com/banban/php/php_09.html にありますように、 --------------------------- <?php $a = 10; if($a > 5) { print("変数\$a は、5 よりも大きい"); } ?> --------------------------- という感じだと思っています。 前者は、「条件が一致したら」の直前(<h3>の前)が「{ ?>」なっていたり、 最後の部分も「<?php } ?>」こうなっていたりで、上記の例にあげた同様の部分と異なります。 双方、同様の条件分岐だと思っているのですが、 後者は省略した記述という事でしょうか。 後者しか見たことがないので、見づらいなと思った次第です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • perl内でPHPを動かす?

    perlでhtmlを書き出しています。 そのhtmlにPHPを埋め込みたく思い、書き出されたhtmlにPHPを記述して phpとして保存。動作を確認しました。 perlで書き出している全てのページにこのPHPを埋め込みたく思い、perlの print <<EOF; ~ EOF の間に <?php ~ ?> を埋め込みましたが動きません。 当然の結果なのでしょうか… 何か方法があればご教示願います。  下記のようなページも見つけましたが、コードをperlに貼り付けても 動作しません。直接貼り付けるのではないのでしょうか? http://phpspot.org/blog/archives/2006/03/perlphp_2.html どうぞ宜しくお願いします。

    • ベストアンサー
    • Perl
  • PHPソースコード簡易暗号化(難読化)「POBS」の使い方。

    PHPソースコード簡易暗号化(難読化)「POBS」の使い方。 PHPソースコードを簡易的に暗号化したくて見つけたのが「POBS」でしたが、セッティング方法がいまいちよくわからず、いまだ使えません。 すでに該当ファイルをダウンロードし、サーバにアップロードし、POBSの画面はブラウザ表示できているのですが・・ どなたかわかる方がいましたら、ご教授くださいませ。 よろしくお願いします。 参考にしていたサイトは以下です。 http://pobs.mywalhalla.net/ http://phpspot.org/blog/archives/2006/01/phpjavascriptpo.html

    • ベストアンサー
    • PHP
  • PHPで定義されている関数のコードが見たい

    PHPでコードを記述するとき、関数を定義することがあります。 function test($name){ : : } しかし、最初から定義されている関数がありますよね。 isset()やfile_get_contents()などの関数です。 こういった関数の中身をみたいのですが、PHPのどの部分を見ればいいのでしょうか。 関数の中身とは、たとえばfile_get_contentsなら function file_get_contents($name){ : //この部分のことです。 : } PEARだったら、たとえばDB.phpならばDB,phpの中身を見ればいいのですが、fopen()などの最初から定義されている関数はどこを見れいいのかがわかりません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • html拡張子のままphpを使いたい

    類似質問を先日立てましたが状況変わったので改めさせて頂きました。 よろしくお願いします。 html拡張子のままphpを動かしたいのですが、うまくいきません。 PHPバージョン:5.3.3 Server API:CGI版 レンタルサーバー phpinfo()で確認した情報:REDIRECT_HANDLER存在しない 1).htaccessに以下書いたが動かない。 ※ AddType application/x-httpd-php .php .html ※ AddHandler application/x-httpd-php .php .html ※ AddHandler php5.3.3-script .html (php_flag allow_url_fopen on、php_flag allow_url_include on 追加も試し済) 2)Telnetなどは使えない。 http://www.hlplus.jp/php/blog/index.php?UID=1293208553 上記が検索でかかったので参考にしたのですが、 残念ながら権限の関係で上記URLの方法は使えませんでした。 3).php時には正常に稼働 html内に記述しているのはincludeとechoのみで、.php拡張子の場合は動作するのは確認済です。(htmlに名前変更したとたんにソースにそのまま出る、ないしダウンロードになって動作しない) ■構造など /php/base.php /file/a/a/a.html base.php <?php $a='<div id="~~~">~~~~~</div>'; ?> a.html <?php include_once(dirname(__FILE__).'/~~~~/php/base.php'); ?> <!doctype html> <html lang="ja"><head><meta charset="utf-8"><title>~~~</title> </head><body> <header><?php echo $a; ?></header> (省略) </body></html> 構造としてはこんな感じで、base.phpをa.htmlへインクルードしています。 考えられる可能性があればご教授頂けると幸いです。

    • ベストアンサー
    • PHP
  • PHPの基本的な作法について

    PHPをはじめたばかり(2日目)のものです。文法は一通り勉強しました。関数はおいおい覚えていけばいいものだと思います。しかしPHP開発には関わった事がなく、基本的・一般的な作法を全く知りません。 個人的に作るものなので完全独自ルールでもいいのですが、人に見せても恥ずかしくないソースを書きたいと思っています。ですので、開発の現場で一般的に使われているルールを知りたいと思っています。これについて教えてください。 (1)共通のコードはどうするの? 多くのページで共通に使うコード、たとえばHTMLのヘッダやメニューの出力処理などはどうするのかでしょうか。 ・すべてのソースに「<?php include './common/….php'; ?>」などと書くもの? ・それ以外の方法もある?各ソースには何も書かず自動挿入されるAOP的な何かとか (2)printの使い方 「print($input_text)」と「print $input_text」どちらを使うか?カッコをつけたほうが他の言語の記述との整合性を取りやすいようにも思うのですが、絶対に使わない戻り値をわざわざ発生させるのもどうかなと思っています。開発現場ではどちらかに統一する事が多いのではないかと思いますが、その場合にどちらに統一している事が多いのでしょうか。 (3)「"」と「'」の使い分け 「"」と「'」の使い分けはするものなのでしょうか?するならどのように使い分けるのでしょうか?私はもともとJavaをやっていたので、必要ではない場合でもつい「"」を優先的に使ってしまいます。しかし役割を考えると、原則「'」を使い、変数やエスケープの展開が必要な時に意識して「"」を使う、とするほうが安全かなとも思います。でも面倒くさいから基本「"」を使い、展開したくない時だけ「'」を使うという風にしてもいいかなと思っています。この点は一般的なルールとしてどうする事が多いのでしょうか?あまり気にしないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで投票カウンタの作成

    PHPで投票カウンタを作成したいと思います。 構造としてはラジオボタンが3つ並んでいて、そのどれかを選び 下にあるOK(ひとつだけ)ボタンをクリックすると、ラジオボタンの横に数値がカウントされるという簡易的なものです。 下記のコードに足りないところやいらないところを教えてください。 ド素人のためご教授願います。 <?php if(isset($_COOKIE["tohyo"])){ $tohyo = $_COOKIE["tohyo"]; $tohyo++; }else{ $tohyo = 0; } setcookie("tohyo", $tohyo, time()+60); ?> <html> <head> <title>投票カウンター</title> </head> <body> <form action="count2.php"> <p> <input type="radio" name="tohyo" value="1"><?php print $value["$kekka"][1]; ?><br> <input type="radio" name="tohyo" value="2"><?php print $value["$kekka"][2]; ?><br> <input type="radio" name="tohyo" value="3"><?php print $value["$kekka"][3]; ?> </p> <input name="submit" type="submit" value="投票"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • php入力画面から確認画面へ情報の受け渡しについて

    php 参考書を見て、入力フォームを作成しているのですが、入力画面から確認表示画面へ情報の受け渡しについて。コードは下に記載してます。 最初の入力画面ではmethod=postで送信した値を$name = $_POST['name'];に格納して次ページに値を渡すそうですが、 しかし最初の入力画面のコードに$name = $_POST['name'];と、もうひとつ、$name = $_SESSION['name'];でセッションに保存して、次ページに送るそうですが、 保存したSESSIONの値は次ページの確認表示画面から戻る際に値を保持する際に使うからだそうですが、値を次ページに送る役割が$_POSTやSESSIONにあるならば、SESSIONの記述のみで 次ページに送れると思うのですが、なぜこのコードの場合、$_POSTに値を格納する必要があるのでしょうか? 以下のような解釈で正しいでしょうか?? 「$_POSTは送られた値をフォームのvalue内にechoで出力するため、SESSIONはページから戻る場合に値を保持するため」 回答よろしくお願いいたします。 コード 入力初期画面 <?php session_start(); $errors = array(); if(isset($_POST['submit'])){ $name = $_POST['name']; if($name === ""){ $errors['name'] = "お名前が入力されていません。"; } if(count($errors) ===0){ $_SESSION['name'] = $name; header('Location:https:次ページへform2.php'); exit(); } } ?> <body> <form action="form1.php" method="post"> お名前 <input type="text" name="name" value="<?php if(isset($name)){echo $name;}?>"> <input type="submit" name="submit" value="確認画面へ"> </body> コード 確認表示画面 <?php session_start(); if(isset($_SESSION['name'])){ $name = $_SESSION['name']; } <body> <form action="form3.php" method="post"> お名前 <?php echo $name;?> <input type="submit" name="submit" value="送信する"> p><a href="form1.php?action=edit">入力画面へ戻る</a></p> </body>

    • ベストアンサー
    • PHP
  • PHP(UTF-8)で作ったフォームで、メールが文字化けします。

    PHPで問合せフォームを作っていて、最初は文字コードが”EUC”でうまく動作していました。ところが、サーバを変えたら文字化けしてしまい、問い合わせたところ”UTF-8”に変えてくださいと言われました。 単純に”EUC”だったところを”UTF-8”に修正したら、HP上の表示は直ったのですが、送信されるメールが文字化けしたままなのです。(「?????」という感じで) mb_language("uni");  を入れたらいいのだろうというとこまでは辿り着いたのですが、どこに入れてもうまくいかず・・・。 http://www.infinity-dimensions.com/blog/archives/000114.html もともと私が作ったプログラムではなく、PHPの知識がないため困っています。 自分なりに調べて、いろいろ試してもわかりませんでした。 助けていただける方がいらっしゃいましたら、よろしくお願いいたします。 -------------(現在のソースです)------------- <?php foreach($_POST as $key => $val){ if(is_array($val)){ continue; } $val = mb_convert_kana($val, "KVas","UTF-8"); $val = trim($val); $val = stripslashes($val); $val = htmlspecialchars($val); $_POST[$key] = $val; } ?> <form method="post" action="<?php print($_SERVER["PHP_SELF"]); ?>">

    • ベストアンサー
    • PHP
  • PHPファイルをcronで定期的に実行したい

    centosでtest.phpを30分おきに動作させようと思います。 test.phpは /var/www/html/においてあります。 test.phpはコードの中で、require_once 'phpkit/kits.inc';と /var/www/html/phpkit/kits.incを呼び出しています。 [root]# find / -name php /root/src/senna-1.1.4/bindings/php /usr/share/swig/1.3.40/php /usr/share/php /usr/bin/php /usr/include/php /usr/lib64/php /var/lib/php [root]# /etc/rc.d/init.d/crond status crond (pid 1181) is running... [root]$ crontab -e 30 * * * * /usr/bin/php /var/www/html/test.php しかし、以上のように設定してもtest.phpは一度も実行されません。 phpのインストールは、ここの「PHPをソースからインストール」を利用しました。 http://www.akiyan.com/blog/archives/2008/09/tritonnmysqlsen.html /var/www/html/にinfo.phpを置いてアクセスしたところ、正常に情報が表示されます。 /var/www/html/にtest.phpを置いて、手動でアクセスしたところ、test.phpは正常に動作します。 ですので恐らくcrontabの設定が間違っているのだと思いますが、これ以上どうすればいいのかがわかりません。 cronでtest.phpを動作させるのに、この後どうすればいいのでしょうか。 どなたかご教示のほど、どうかよろしくお願いします。

  • PHPとHTMLを混在させる方法

    phpで、MySqlに登録している顧客データを編集するフォームを作っています。 HTMLの中にPHPのif文を埋め込む方法がわからないので、質問します。 select.php で顧客データのID番号を入力して form.php に指定したID番号の顧客データを表示するところをやっているのですが、 チェックボックスを使う項目があります。 「登録データが1だったら、チェックボックスをオンにする」 というところの記述の仕方がわかりません。 スクリプトの構造上、どうしてもフォーム全体を 変数:$body に入れて書かなければなりません。 変数に入れずに、htmlにif文のところだけを埋め込む方法ならわかるのですが。 form.phpに書いているその部分のコードは下記です。これだと、if文のコードがそのままhtmlソースに出てきてしまいます。 form.phpより抜粋-------------------------------------------- $body="<form action='conf.php' method='post' enctype='multipart/form-data'> <table><tr> <td ><input type='checkbox' name='view_flag' value='1'> <?php if($col[view_flag]=='1') { echo 'checked' ;}; ?> />表示する</td> </tr></table> ...以下省略"; ----------------------------------------------------------------- 変数の中に入れてできる方法がわかる方いたら、教えて下さい。

    • ベストアンサー
    • PHP