Qual è la strada più breve per l'inserimento di una variabile in un file di testo con PHP?

StackOverflow https://stackoverflow.com/questions/1219008

  •  10-07-2019
  •  | 
  •  

Domanda

Mi chiedo se c'è una strada più breve per l'inserimento di testo in PHP che

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

Per esempio, utilizzando ruby on rails, ho potuto impostare

city = 'London'

da qualche parte nel codice, e nel mio .erb file che ho potuto fare

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

Ho letto da qualche parte che {$city} potrebbe essere utilizzato, ma ho cercato e non l'ha fatto.Quindi c'è una forma più breve rispetto a <?php print $var; ?> ?

È stato utile?

Soluzione

Si potrebbe utilizzare short_open_tag, che devono essere abilitato nella configurazione, ma non è considerato come una buona pratica, come funziona solo se questi sono abilitato e non sono sempre (forse anche per impostazione predefinita)

Un lungo utilizzo di tag e di eco/stampa potrebbe essere più lungo, sì...Ma ti consiglio di utilizzare quelli, e non di tag brevi.


Inoltre, si noti che potrebbe essere necessario per sfuggire i tuoi dati, quando si proviene da un non-fonte attendibile e/o contenere il codice HTML che non si desidera ottenere iniettato nella pagina, per evitare iniezioni di HTML/JS (vedere htmlspecialchars) :


EDIT dopo i commenti, per aggiungere un paio di cose su short_open_tag :

Perché sono short open tag considerato (almeno per me ^^ ) la cattiva pratica ?

Prima di tutto, dopo un po ' il controllo, non sono abilitate per impostazione predefinita :

Per 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

Disattivata per impostazione predefinita in "development"o "production"impostazioni".

Per PHP 5.2.10 (il più recente versione di 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

Disattivato per impostazione predefinita il "recommended"impostazioni


Considerando queste impostazioni di default sono a volte (spesso ?) tenuto da servizi di hosting, è pericoloso fare affidamento su short_open_tag in fase di attivazione.
(Io stesso ho incorrere in problemi con quelli disabili...E quando non sono admin del server e non sono richiesti privilegi per modificare questo, non è divertente ^^ )

Se si desidera che alcuni numeri, si può dare un'occhiata a Rapida gestione questionari: short_open_tag supporto on o off per impostazione predefinita?
(Non è una prova scientifica-ma vedi potrebbe essere pericoloso utilizzare quelli per un'applicazione devi rilasciare al pubblico)


Come hai detto tu, quelli che, quando attivato, il conflitto con la dichiarazione di XML-significa che è necessario utilizzare qualcosa di simile a questo :

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

Considerando short open tag esiste, e può essere attivato sul server si utilizza, si dovrebbe probabile che non uso <?xml mai, però ;troppo male :-(


In realtà, la lettura attraverso il php.ini-recommended 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.

Quello da PHP 6 è ancora più interessante :

; 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.

(Potrebbe essere lo stesso in PHP 5.3 ;non di controllo)


Ci sono stati rumors short open tag potrebbe essere rimosso da PHP 6 ;considerando la parte di php.ini che ho appena postato, probabilmente non...ma, ancora...


Per dare un argomento indicando l'altra direzione (devo essere onesto, dopo tutto) :utilizzando short open tag per i file di modello (solo) è qualcosa che è spesso fatto in Zend Framework esempi che utilizzano i file di modello :

Nei nostri esempi e documentazione fare uso di PHP breve tags:

Detto questo, molti sviluppatori preferiscono utilizzare i tag per le finalità di la convalida o la portabilità.Per esempio, short_open_tag è disabilitato nel php.ini.raccomandato file, e se si XML del modello in vista script, short open tag causerà l' modelli di convalida.

(fonte)

Al contrario, per .php file :

Breve tag non sono mai ammessi.Per i file contenenti solo codice PHP, il il tag di chiusura che deve sempre essere omesso

(fonte)


Spero che queste informazioni sono utili, e portare qualche tipo di risposta al tuo commento :-)

Altri suggerimenti

Se si passa dalla modalità PHP, quindi l'unico modo per stampare la variabile è quello di passare in e stampa come sopra.Si può rimanere in modalità PHP e utilizzare il {} costruzione è provato:

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

Ho letto da qualche parte che {$city} potrebbe essere utilizzato

Se si va per un motore di template come Smarty si può fare questo.Che potrebbe essere utile se si sta sviluppando in un team e alcuni di loro non sanno PHP.

In caso contrario, il più breve che si ottiene è il seguente, supponendo che si dispone di tag brevi abilitato:

<?=$city?>

Se non lo si fa, o si sta creando una app per ridistribuire ad altri, quindi utilizzare questo:

<?php echo $city ?>

Solo estendere il blocco PHP e fare questo:

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

In alternativa, è possibile utilizzare ""invece di "' e sostituire ',$city,' con $city, ma ci vuole più tempo di CPU per eseguire l'analisi per variabili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top