0

index.php?bodyonly=1 php のようなものを開いたときに、body html タグの内容のみが返されるようにしようとしています。ただし、次のコードのようなものを試すと:

<?php if !isset($_GET["bodyonly"]): ?><html>
    <head>
        <title>TEST</title>
    </head>

    <body>

        <p>Up!</p>

        <?php endif; ?><p>Down!</p><?php if !isset($_GET["bodyonly"]): ?>
    </body>
</html><?php endif; ?>

エラー 500 が表示され、何も起こりません。if(isset...){ echo ... } を使用して別の方法を試してみると、当然のことですが、やりたくない他の多くの変更を行う必要があります。

教えてくれませんか?:)

4

1 に答える 1

3

すべてのタイプの PHP 構文で、条件には括弧が必要です。

<?php if (!isset($_GET["bodyonly"])): ?><html>
    <head>
        <title>TEST</title>
    </head>

    <body>

        <p>Up!</p>

        <?php endif; ?><p>Down!</p><?php if (!isset($_GET["bodyonly"])): ?>
    </body>
</html><?php endif; ?>

また、コードに最新の構造を使用することを検討しましたか? 中括弧と PHP を HTML ラッパーではなくプログラミング言語として使用することで、条件付きで何が実行されているかを簡単に確認できます。

<?php

$status="Up";
// $status="Down";

$header="<html>\n\t<head>\n\t\t<title>TEST</title>\n\t</head>\n\n  <body>\n";
$footer="  </body>\n</html>\n";

if (!isset($_GET["bodyonly"])) {
  print $header;
}

printf("\t<p>%s</p>\n", $status);

if (!isset($_GET["bodyonly"])) {
  print $footer;
}

または、楽しみのために、次のこともできます。

<?php

$status="Up";
// $status="Down";

$header="<html>\n\t<head>\n\t\t<title>TEST</title>\n\t</head>\n\n  <body>\n";
$footer="  </body>\n</html>\n";

print isset($_GET["bodyonly"]) ? "" : $header;

printf("\t<p>%s</p>\n", $status);

print isset($_GET["bodyonly"]) ? "" : $footer;

または(これはばかげているだけです):

<?php

$status="Up";
// $status="Down";

$header=""; $footer="";

if (!isset($_GET["bodyonly"])) {
  $header="<html>\n\t<head>\n\t\t<title>TEST</title>\n\t</head>\n\n  <body>\n";
  $footer="  </body>\n</html>\n";
}

print $header . sprintf("\t<p>%s</p>\n", $status) . $footer;

php.net の構文に関する説明をご覧ください。

于 2012-06-12T01:00:28.453 に答える