5 Stimmen

Ist Inline-HTML innerhalb einer PHP-Funktion gültig?

Ist das folgende PHP gültig?

<?php
function a($a) {
?>
    <p><?=$a?></p>
<?php
}
?>

(Ich weiß, dass das keine gute Idee ist, ich möchte nur wissen, ob es möglich ist).

4voto

Vishwanath Dalvi Punkte 33414
<?php
function a($a) {
?>
    <p><? echo $a?></p> //echo variable content's 

// <? ?> is allowed only if you have **Enabled short_tages in php.ini file**
<?php
}
?>

short_tages in der Datei php.ini aktivieren

<?
$a="stackoverflow";
function a($a) {
?>
    <p><?= echo $a?></p>
<?
}
a($a);
?>

Wenn Sie versuchen, dieses Programm mit <?= Dies ist nicht erlaubt und führt zu einer Fehlermeldung

Parse error: syntax error, unexpected T_ECHO

<?= is not allowed in php for tags <? is allowed if Set

short_open_tag=On

in php.ini

Ab PHP 5.4.0, <?= ?> PHP-Tags sind unabhängig von der Einstellung short_open_tag ini verfügbar .

2voto

stealthyninja Punkte 10225

Wenn short_open_tags eingeschaltet sind, ja, das ist möglich.

2voto

David Fells Punkte 6552

Ja, das ist möglich. Es scheint, dass Sie das leicht hätten testen können :) Versuchen Sie auch, die Verwendung von <? verwenden <?php - es funktioniert immer und ist nicht abhängig von der Aktivierung von short_tags in der php.ini

1voto

user5851922 Punkte 11

Ich denke, es ist kein häufig verwendetes Format und folgt nicht dem Paradigma des funktionalen Codeschreibens. Außerdem würde das Hinzufügen von dynamischen Strings zu einem langen Inline-HTML-Code mehr eingebettete Echo-Aufrufe erfordern, was langsamer ist als z. B. das Speichern eines Strings und das Hinzufügen des dynamischen Inhalts, gefolgt von einem Echo/Druck

1voto

Mark Amery Punkte 124946

Nach meinen Erfahrungen und Experimenten: Ja, das funktioniert gut. Aus den PHP-Tags auszubrechen und etwas Inhalt zu schreiben ist gleichbedeutend mit der Verwendung eines echo Erklärung. Das heißt, eine Funktion wie diese...

<?php
function hello($name) {
    ?><p>Hello, <?= $name ?>! How are you today?</p><?php
}

verhält sich genauso wie eine Funktion wie diese:

<?php
function hello($name) {
    echo '<p>Hello, ';
    echo $name;
    echo '! How are you today?</p>';
}

Leider kann ich im Handbuch nichts finden, was dies bestätigen würde. Am ehesten findet sich das in Beispiel 1: Fortgeschrittenes Escaping mit Bedingungen über die Die Flucht vor HTML Seite, die zeigt, dass es möglich ist, PHP zu mischen if Anweisungen mit eingebettetem HTML:

<?php if ($expression == true): ?>
  This will show if the expression is true.
<?php else: ?>
  Otherwise this will show.
<?php endif; ?>

Es ist einfach genug, dies in der Praxis zu testen und zu beobachten, todos Kontrollstrukturen scheinen gut mit eingebettetem HTML zu funktionieren, einschließlich for Schleifen und Funktionen. Im Handbuch wird dies jedoch nicht erwähnt.


Zum Schluss noch ein paar Anmerkungen zur Formatierung von PHP-Variablen in HTML, wie sie der Fragesteller mit seinem $a Variable in der Frage und ich tue mit meinem $name Variable oben:

  1. Beachten Sie, dass es seit PHP 5.4 absolut in Ordnung ist, die <?= kurzes Echo-Tag in Ihrem eingebetteten HTML. Siehe die oben verlinkte Handbuchseite:

    Außerdem gibt es den kurzen Echo-Tag <?= ?> die in PHP 5.4.0 und höher immer verfügbar ist.

    Die anderen Antworten hier behaupten oder implizieren, dass <?= ist nur verwendbar, wenn short_open_tags ist, sind falsch und waren bereits zu dem Zeitpunkt, als sie veröffentlicht wurden, falsch.

  2. In echtem Code sollten Sie in der Regel htmlspecialchars auf Text, den Sie in Ihr HTML-Template einfügen, etwa so:

    <p>Hello, <?= htmlspecialchars($name) ?>! How are you today?</p>

    Wenn Sie dies nicht tun und die Variable, die Sie verwenden, Zeichen enthalten kann wie < y > Wenn Sie das nicht tun, riskieren Sie, Syntaxfehler oder unerwünschte Tags in Ihren HTML-Code einzubauen und sich möglicherweise für XSS-Angriffe zu öffnen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X