Frage

Ich frage mich, ob es ein kürzerer Weg ist Text in PHP des Einsetzens als

<?php
$city = "London";
?>
This website is a funky guide to <?php print $city; ?>!!!

Zum Beispiel mit Ruby on Rails, konnte ich gesetzt

city = 'London'

irgendwo im Code, und in meiner .erb Datei konnte ich tun

This website is a funky guide to <%= city %>!!!

Ich habe irgendwo gelesen, dass {$city} verwendet werden könnte, aber ich versuchte es und es kommt nicht. So gibt es eine kürzere Form als <?php print $var; ?>?

War es hilfreich?

Lösung

könnten Sie short_open_tag , die in Ihrer Konfiguration aktiviert werden muß, aber das ist nicht als eine gute Praxis betrachtet, wie es funktioniert nur, wenn diese aktiviert sind - und sie sind nicht immer (vielleicht nicht einmal in der Standardeinstellung)

long-Tags und echo / print verwendet, kann länger sein, ja ... Aber ich würde empfehlen, die, und nicht kurz Tags.


Beachten Sie auch, dass Sie Ihre Daten entweichen könnte müssen, wenn sie von einer nicht vertrauenswürdigen Quelle stammt und / oder kann HTML enthalten Sie wollen in der Seite injiziert nicht bekommen, um Injektionen von HTML / JS zu vermeiden (siehe htmlspecialchars ) :


EDIT nach den Kommentaren, ein paar Dinge über short_open_tag hinzuzufügen:

Warum sind kurze offene Tags als (zumindest von mir ^^) schlechte Praxis?

Zu allererst nach einiger Überprüfung, werden sie standardmäßig nicht aktiviert:

Für PHP 5.3:

squale@shark:~/temp/php/php-5.3.0
$ grep 'short_open_tag' php.ini-development
; short_open_tag
short_open_tag = Off
squale@shark:~/temp/php/php-5.3.0
$ grep 'short_open_tag' php.ini-production
; short_open_tag
short_open_tag = Off

standardmäßig deaktiviert in entweder "development" oder "production" Einstellungen.

Für PHP 5.2.10 (neueste Version von PHP 5.2) :

squale@shark:~/temp/php/php-5.2.10
$ grep 'short_open_tag' php.ini-dist
short_open_tag = On
squale@shark:~/temp/php/php-5.2.10
$ grep 'short_open_tag' php.ini-recommended
; - short_open_tag = Off           [Portability]
short_open_tag = Off

In der Voreinstellung deaktiviert in den "recommended" Einstellungen


Betrachtet man diese Standardeinstellungen manchmal sind (oft?) gehalten von Hosting-Services, ist es gefährlich, auf short_open_tag verlassen aktiviert wird.
(Ich habe mich laufen in Problem mit denen, behindert zu sein ... Und wenn Sie nicht Admin des Servers sind und nicht privilegies erforderlich, dass zu ändern, ist es nicht Spaß ^^)

Wenn Sie einige Zahlen möchten, können Sie einen Blick auf Schnell survery rel="nofollow: short_open_tag Unterstützung ein- oder ausgeschaltet standardmäßig?
(kein wissenschaftlicher Beweis - aber zeigen es gefährlich werden könnte, die für eine Anwendung verwenden Sie für die Öffentlichkeit freigeben würde)


Wie Sie schon sagten, die, wenn sie aktiviert sind, Konflikte mit XML-Deklaration - bedeutet, dass Sie etwas verwenden:

<?php echo '<?xml version="1.0" encoding="UTF-8" ?>'; ?>

kurze offene Tags Betrachtet man existiert, und könnte auf dem Server aktiviert werden Sie verwenden werden, sollten Sie wahrscheinlich verwenden <?xml nicht immer, obwohl; zu schlecht : - (


Eigentlich das Lesen durch die php.ini-recommended von PHP 5.2.10:

; Allow the <? tag.  Otherwise, only <?php and <script> tags are recognized.
; NOTE: Using short tags should be avoided when developing applications or
; libraries that are meant for redistribution, or deployment on PHP
; servers which are not under your control, because short tags may not
; be supported on the target server. For portable, redistributable code,
; be sure not to use short tags.

Der eine von PHP 6 ist noch interessanter:

; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It's been
; recommended for several years that you not use the short tag "short cut" and
; instead to use the full <?php and ?> tag combination. With the wide spread use
; of XML and use of these tags by other languages, the server can become easily
; confused and end up parsing the wrong code in the wrong context. But because
; this short cut has been a feature for such a long time, it's currently still
; supported for backwards compatibility, but we recommend you don't use them.

(Könnte das gleiche in PHP 5.3 sein, nicht überprüfen)


Es wird Gerüchte kurze offene Tags entfernt werden können PHP aus 6; den Anteil der php.ini bedenkt, dass ich gerade geschrieben, wird es wahrscheinlich nicht ... aber immer noch ...


Um ein Argument gibt in der anderen Richtung zeigen (ich muß ehrlich sein, nachdem alle): mit einem kurzen offenen Tags für Vorlagendateien (nur) ist etwas, das oft getan in den Beispielen Zend Framework, die Template-Dateien verwenden:

  

In unseren Beispielen und Dokumentation, wir   Verwendung von PHP Short-Tags machen:      

Wie gesagt, bevorzugen viele Entwickler   verwenden volle Tags für Zwecke   Validierung oder Portabilität. Zum   Beispiel short_open_tag ist deaktiviert,   in der php.ini.recommended-Datei und   wenn Sie XML in View Skripten Vorlage,   kurze offene Tags bewirkt, dass die   Vorlagen zum Scheitern verurteilt Validierung.

( Quelle )

Im Gegenteil, für .php Dateien:

  

Short-Tags sind nie erlaubt. Zum   Dateien nur PHP-Code enthalten, der   Schließt Tag muss immer weggelassen wird

( Quelle )


Ich hoffe, diese Informationen nützlich sind, und bringen eine Art Antwort auf Ihren Kommentar : -)

Andere Tipps

Wenn Sie die PHP-Modus wechseln, dann der einzige Weg, um die Variable zu drucken ist wieder in sie wechseln und drucken, wie Sie oben haben. Sie könnten in den PHP-Modus bleiben und verwenden, um die {} Konstruktion Sie versucht:

<?php
$city = "London";
echo "This website is a funky guide to {$city}!!!";
?>
  

Ich habe irgendwo gelesen, dass {$ city} verwendet werden könnte

Wenn Sie eine Template-Engine gehen wie Smarty Sie dies tun können. Das könnte nützlich sein, wenn Sie in einem Team sind zu entwickeln und einige von ihnen nicht wissen, PHP.

Ansonsten ist die kürzeste Sie bekommen ist die folgende, vorausgesetzt, Sie haben kurze Tags aktiviert:

<?=$city?>

Wenn Sie dies nicht tun, oder Sie erstellen eine App an andere zu verteilen, dann verwenden:

<?php echo $city ?>

Just erweitern PHP-Block und dies tun:

<?php
$city = 'London';
echo 'This website is a funky guide to ',$city,' !!!';
?>

Alternativ können Sie „“ anstelle von ‚‘ verwenden und ',$city,' mit $city ersetzen, aber es dauert mehr CPU-Zeit für Variablen zu analysieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top