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).
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).
<?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 .
Wenn short_open_tags eingeschaltet sind, ja, das ist möglich.
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
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:
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.
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 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.