2013-04-26 21 views
11

Come inserire il codice PHP in una stringa?Inserire il codice PHP in una stringa

$phpCode = '<? if($condtion){ ?>'; 

Per qualche ragione, quando faccio questo ed eco il codice, non ottengo il tag di apertura PHP, <?.

mi sto perdendo qualcosa? C'è un modo migliore o più corretto per farlo? Attualmente sto guardando lo PHP docs on strings ma vorrei ricevere il tuo feedback.

Edit: Il motivo per cui sto utilizzando apsotrophes (') e non citazioni (") è perché non voglio che il codice per compilare il valore per la condizione. Voglio che echi così com'è.

+1

Stai riproducendo il codice nell'output HTML? Se è così, viene interpretato come un tag e ha bisogno di essere sfuggito per apparire sullo schermo. – grossvogel

+0

Basta dare un'uscita o anche eseguirla? –

+0

Viene inserito in un file .php che verrà eseguito in un secondo momento. –

risposta

12

Uso htmlspecialchars():

$phpCode = '<? if($condtion){ ?>'; 
echo htmlspecialchars($phpCode); 
+3

Non dovrebbe 'htmlspecialchars()' essere sufficiente per l'escape? [Sfuggire a tutte le entità è un po 'eccessivo.] (Http://stackoverflow.com/questions/46483/htmlentities-vs-htmlspecialchars) – grossvogel

+1

Abbastanza giusto. Risposta aggiornata –

+0

Grazie! Questo sembra aver funzionato :) Tuttavia, poiché l'output sarà plain-text, ho impostato le mie variabili in questo modo: '$ phpCode = htmlspecialchars ('');' –

6

devi echo htmlspecialchars($phpCode);

1

provare questi $str= htmlentities('<?php //***code***// ?>');

-1

Eval php documentation

Usa Eval() se si desidera eseguire il codice nella stringa.

esempio

$str = "Hello "; 
eval('$str .= "World"'); 

echo $str; 
/* Output: Hello World */ 
+0

Posso chiederti perché non votare? –

+0

Non penso che questo sia ciò che l'OP sta chiedendo per l' –

+1

OP dice nei commenti "Viene inserito in un file .php che verrà eseguito in un secondo momento". Cosa è posible con 'eval()'. –

0

È anche possibile utilizzare entità HTML.

Quando si sostituisce solo la parentesi quadra di apertura in PHP, il resto sarà considerato una stringa quando analizzato con eco:

<?php 
    //&lt; is the HTML entity for '<' (without quotes). 
    $str = '&lt;?php yourstring ?>'; 
    echo $str; 
?> 

Fonte HTML Entities

0

È possibile uscita codice PHP come testo in modo seguente

$phpCode = '<? if($condtion){ ?>'; 
echo "<pre>"; 
echo htmlspecialchars($phpCode); 
echo "</pre>"; 
0

C'è già un paio di risposte a questo, ma solo per aggiungere la mia $ 0,02 ...

Questo codice:

<?php 
    $test = '<?php echo "hello world!"; ?>'; 
    echo $test; 
?> 

Produce una schermata bianca vuota nel browser, ma se si visualizza l'origine vedrete questa uscita:

<?php echo "hello world!"; ?> 

Questo ha a che fare con il modo in cui il browser sta rendendo il tuo codice PHP. I browser non sono pensati per il rendering del codice PHP, ma piuttosto del codice HTML. Se stai facendo eco al codice perché stai testando ciò che verrà scritto sul tuo file, quindi basta vedere il codice sorgente per convalidare ciò che viene prodotto è ciò che vuoi che venga scritto sul file. Non lo vedrai nel browser stesso perché non sa come eseguire il rendering del tag ?php, figuriamoci cosa fare con l'attributo echo.

Opzionalmente, come tutti hanno già dichiarato, è possibile passare la stringa attraverso htmlspecialchars se tutto ciò che si vuole fare è renderlo nel browser senza dover visualizzare la fonte.Non vorrai farlo se lo stai scrivendo sul file, ma potresti aiutarti a eseguire il debug del tuo output.

Un'altra opzione sarebbe quella di eseguire lo script dalla riga di comando. Non tenterà di rendere il tuo output e invece lo sputerà letteralmente.

Problemi correlati