2013-04-26 27 views
11

PHP Kodunu bir dizeye nasıl koyarım? Nedense Bir dize PHP kodu koyma

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

, bunu ve kodunu yankı zaman, ben açılış PHP etiketi, <? alamadım.

Bir şey mi eksik? Bunu yapmak için daha iyi veya daha uygun bir yolu var mı? Şu anda PHP docs on strings'a bakıyorum ama geri bildiriminizi almak istiyorum.

Düzenleme: Ben kod koşulu değerini doldurabilirsiniz istemiyorum çünkü apsotrophes (') ve tırnak kullanıyorum sebebi (") 'dir. Ben olduğu gibi yankılanmasını istiyorum.

+1

Kodu HTML çıktısına mı ekliyorsunuz? Öyleyse, bir etiket olarak yorumlanır ve ekranda görünmesi için kaçması gerekir. – grossvogel

+0

Sadece bir çıkış veriyor musunuz, yoksa çalıştırıyor musunuz? –

+0

Daha sonra çalıştırılacak bir .php dosyasına yerleştiriliyor. –

cevap

12

Kullanım htmlspecialchars():

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

htmlspecialchars() 'in kaçması gerekmiyor mu? [Bütün varlıklardan kaçmak çok fazla abartılı.] (Http://stackoverflow.com/questions/46483/htmlentities-vs-htmlspecialchars) – grossvogel

+1

Yeterince adil. Cevap güncellendi. –

+0

Teşekkürler! Bu işe yaramış gibi görünüyor :) Yine de çıktı düz metin olacak diye, değişkenlerimi şöyle belirledim: $ phpCode = htmlspecialchars (''); –

6

Sen dizede kod çalıştırmak istiyorsanız bu $str= htmlentities('<?php //***code***// ?>');

1

gerekir.

Örnek

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

echo $str; 
/* Output: Hello World */ 
-1

Eval php documentation

kullanın Eval() deneyin echo htmlspecialchars($phpCode);

+0

Neden reddedildiğini sorabilir miyim? –

+0

OP'nin –

+1

OP için sorduğu şeyin bu olduğunu sanmıyorum, yorumlarda '' Daha sonraki bir zamanda çalıştırılacak bir .php dosyasına konuluyor '' yorumunda. Eval() ile ne yapılabilir? –

0

Ayrıca HTML öğelerini kullanabilirsiniz.

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

Kaynak şu şekilde metin olarak HTML Entities

0

çıktısını alabilirsiniz PHP kodu: eko ile ayrıştırılan zaman

PHP sadece açılış köşeli ayraç yerine, geri kalan bir dize olarak kabul edilecektir

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

Orada bu zaten birkaç cevap var, ama sadece eklemek benim 0,02 $ ...

Bu kod:

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

tarayıcıda boş bir beyaz ekran üretir, ancak kaynağını görüntülemek eğer bu çıktıyı görürsünüz:

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

Bu şekilde tarayıcı ile ilgisi var PHP kodunuzu oluşturuyor. Tarayıcılar PHP kodunu oluşturmayı değil, HTML biçimlendirmeyi ifade eder. Kodu yankılanıyorsanız, dosyanıza ne yazılacağını sınamaktasınız demektir, o zaman sadece çıktıların ne olduğunu doğrulamak için kaynağı görüntüleyiniz. ?php etiketinin nasıl oluşturulacağını bilmediği için tarayıcının kendisinde görmeyeceksiniz, echo özniteliğiyle ne yapalım.

İsteğe bağlı olarak, herkesin yaptığı gibi dizgeyi htmlspecialchars numaralı dizgeden geçirebilirsiniz, tek yapmanız gereken kaynağı görüntülemek zorunda kalmadan tarayıcıda işlemek.Dosyaya yazıyorsanız, ancak çıktınızın hatalarını ayıklamanıza yardımcı olabilirsiniz.

Komut dosyanızı komut satırından çalıştırmak başka bir seçenektir. Çıktınızı göstermeye kalkışmayacak ve bunun yerine sadece tükürdü.