2013-03-05 19 views
8

In una situazione in cui piccoli frammenti di PHP vengono utilizzati molto nell'html, come Wordpress, è possibile utilizzare PHP all'interno di echos PHP?Puoi inserire PHP in PHP con echo?

Esempio:

<?php 
    echo "<?php the_author_meta('description'); ?>"; 
?> 

quanto inutile, in quanto esso sia, può ancora essere fatto? In caso contrario, un aspetto di PHP che sembra ancora confondermi leggermente è come terminare e riavviare PHP durante l'output di HTML.

Caso in questione, la risposta di Chris ': How can I echo HTML in PHP? - Voglio così male mettere un ?> alla fine del suo esempio, ma questo causa errori. Qualcuno può indicarmi la direzione di alcune informazioni complete su come questo avvio/arresto con PHP funzioni quando si confondono con HTML, HTML che a sua volta può usare frammenti PHP in esso.

+14

può essere fatto con 'eval'. Ma per favore non farlo. –

+1

Risposta semplice, ** No! ** –

+3

Perché non usare 'echo get_the_author_meta ('description')'? – BenM

risposta

7

Non si può avere php echo più codice PHP da valutare perché PHP interpreta il codice in un unico passaggio. Se avete, per esempio, <?php echo '<?php echo "hello"; ?>'; ?>, otterrete letteralmente il testo, <?php echo "hello"; ?> come output, e l'interprete non lo toccherà.

È possibile, tuttavia, saltare dentro e fuori di PHP a volontà:

<?php 
echo "I am going to be interpreted by PHP."; 
?> 
I am not interpreted by PHP. 
<?php 
echo "But I am again."; 
?> 

Se si pensa che è necessario per produrre il codice PHP che è essa stessa rivalutato, c'è sempre un modo migliore per realizzare Questo. Se fornisci un esempio specifico di ciò che stai cercando di realizzare (caso reale), la gente qui su SO sarebbe felice di aiutarti.

+0

In definitiva, non ho mai voluto ricorrere a ciò che stavo chiedendo. Era solo una curiosità morbosa. Ho finito con il semplice approccio descritto da Chris nella sua risposta votata qui: http: // stackoverflow.it/questions/1100354/how-can-i-echo-html-in-php Questo approccio, per quanto semplicistico, mi è sfuggito a causa dell'intera cosa senza tag finale. Ho solo dovuto leggere di più sul perché è con PHP. Sono andato avanti e l'ho scritto, l'ho testato e ho gestito una soluzione priva di errori senza inizio PHP. Il tuo commento "salta dentro e fuori da PHP a tuo piacimento" ha aiutato. – user1729506

1

Sì, ma è un'idea orribile. In questo caso, dovresti semplicemente scrivere la funzione. Se si desidera che insieme a "link" i più ricorrenze, creare la propria funzione che fa questo (come function describe() {the_author_meta('description');})

In generale, è necessario rendersi conto che qualcosa tra <?php e la prossima ?> sarà considerato un blocco PHP e analizzato dal motore. Qualcosa su in quei blocchi è lasciato così com'è. Se si riscontrano problemi specifici, si prega di chiedere informazioni su di essi in particolare;)

2

Per quanto riguarda: "un aspetto di PHP che sembra ancora confondermi leggermente è come terminare e riavviare PHP quando si esegue l'output di HTML."

<?php 
// Do some wicked cool stuff in PHP here. 
?> 
<html> 
<body> 
Output some html here 
<?php 
//More awesome PHP stuff here. 
?> 
Back to html 
</body> 
</html> 
<?php 
// You can do any final stuff you want to do here. 
?> 

O forse vuoi dire qualcosa di più simile a questo:

<table> 
<?php 
foreach($person as $p){ 
    echo "<tr>"; 
    echo "<td>".$p['name']."</td>"; 
    echo "</tr>"; 
} 
?> 
</table> 
3

Prova:

<?php 
    echo htmlspecialchars("<?php the_author_meta('description'); ?>"); 
?> 
+1

+1 Questa è la risposta più appropriata, se hai già dato il codice php in una variabile e vuoi "echo" il contenuto in una pagina web. – ssh