Warum in PHP keinen Parsing-Fehler anzeigen?

Lesezeit: 1 Minute

Benutzer-Avatar
Irfan

Ich habe folgendes ausgeführt PHP Code:

<?php 
    </script>
?>

Es gab keine Analysefehler und die Ausgabe war?>” (Beispiel).

In ähnlichen Fällen erhalte ich einen Parsing-Fehler:

<?php 
    </div>
?>

Analysefehler: Syntaxfehler, unerwartetes ‘<' in ...

Warum nicht <?php </script> ?> den gleichen Fehler geben?

  • Nur neugierig. Was wollten Sie erreichen oder woran haben Sie experimentiert?

    – asprit

    5. November 2012 um 8:22 Uhr


  • Tatsächlich war der Fall letzte Nacht anders, ich habe das schließende PHP-Tag verpasst. Und danach hatte ich ein

    -Tag und ich verbrachte mehr als 30 Minuten damit, herauszufinden, warum dies keinen Fehler enthält, aber die Ausgabe immer noch nicht wie gewünscht ist .

    – Irfan

    5. November 2012 um 8:25 Uhr

  • Ich will nicht mehr auf diesem Planeten leben.

    – Kzqai

    6. Mai 2013 um 16:48 Uhr

  • PHP macht das mit Menschen.

    – xiankai

    29. September 2013 um 11:12 Uhr

Benutzer-Avatar
Pekka

Das muss daran liegen Es gibt verschiedene Möglichkeiten, einen PHP-Codeblock zu starten:

  • <? ... ?> (bekannt als short_open_tag)

  • <?php ... ?> (der Standard wirklich)

  • <script language="php"> ... </script> (nicht empfohlen)

  • <% ... %> (veraltet und entferntes ASP-Tag nach 5.3.0)

Anscheinend können Sie einen PHP-Block auf eine Weise öffnen und auf die andere Weise schließen. Wusste das nicht.

In Ihrem Code haben Sie also den Block mit geöffnet <? aber PHP erkennt </script> als näher. Was passiert ist, war:

<?php       <----- START PHP
</script>   <----- END PHP
?>          <----- JUST GARBAGE IN THE HTML

  • Beachten Sie, dass mit <script language="php"> ist nicht zu empfehlen.

    – John Dvorak

    5. November 2012 um 8:24 Uhr


  • Kurze Notiz, weil ich mich erinnerte, dass es einige Änderungen gab short_open_tag Richtlinie. Unter PHP5.4 <?= kurz für <?php echo benötigt die nicht mehr short_open_tag. Wechseln zwischen Systemen wo <?= verfügbar und nicht verfügbar hat mich immer frustriert. php.net/manual/en/ini.core.php#ini.short-open-tag

    – Klo

    5. November 2012 um 12:11 Uhr


  • @thatmiddleway Beachten Sie, dass das offizielle Dokument empfiehlt <?php ... ?> auch: php.net/manual/en/language.basic-syntax.phpmode.php

    – John Dvorak

    6. November 2012 um 19:06 Uhr

Benutzer-Avatar
amd

In PHP können Sie die script -Tag, um einen PHP-Block zu öffnen.

Sie können also verwenden

<script language="php">
    echo 'hello world';
</script>

In Ihrem Beispiel haben Sie also das normale offene Tag gemischt, <?phpmit dem schließenden Tag, </script>. Der Parser geht also davon aus, dass der gesamte Text nach dem schließenden script-Tag normal ist HTML.

Lesen Sie mehr in Flucht aus HTML.

1361610cookie-checkWarum in PHP keinen Parsing-Fehler anzeigen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy