2009-11-11 54 views
1

這可能有點不尋常,但我需要回顯<?php。不過,我認爲PHP將它視爲實際的<?php並開始執行代碼,而不是將其視爲字符串。我如何逃避<?php?>,以便將它們視爲字符串?手冊中沒有關於此的內容。我需要逃避嗎?

謝謝,我知道這有點不尋常。

回答

1

您可以使用&lt;&gt; HTML實體(替換 '<' 和 '>')。這些只能在瀏覽器中處理,所以PHP不會嘗試運行該代碼。

+0

如果我想寫入文件,這項工作是否可行? – Cyclone 2009-11-11 18:39:15

+0

需要更多信息。我不明白爲什麼不這樣。 – 2009-11-11 18:40:13

+0

我正在嘗試動態生成一個php文件,並且它需要能夠編寫它。當我嘗試它時,它根本不起作用...... – Cyclone 2009-11-11 18:41:10

0

如果它們在字符串中回顯,它們將不會被執行。

+0

亦不會顯示在屏幕上使用'回聲「」(當然不是我的機器Ubuntu9.10,Apache2.2.12,PHP5.2上);' – 2009-11-11 18:44:39

+0

@ricebowl這似乎是我的問題,我不是看到任何東西 – Cyclone 2009-11-11 18:45:33

+1

Nah。代碼應該被執行,或者在源代碼中可見。你確定它不是? – 2009-11-11 18:50:30

2

只使用ヶ輛功能

+0

如何做到這一點? – Cyclone 2009-11-11 18:36:21

+1

'echo htmlentities(「<?php」)' – 2009-11-11 18:39:06

1

在HTML,

&lt;?php 

或者在PHP中:?

echo htmlentities('<?php'); 
1

如果這是你的代碼:

<?php 
    echo '<?php'; 
?> 

,並且在運行,作爲一個網頁,你會看到什麼。但不是因爲PHP沒有迴應你的字符串<?php,而是因爲瀏覽器看到<,並認爲這是標籤的開始,並且標籤不顯示。這顯然是一個錯誤,但這就是瀏覽器正在做的事情。

要解決這個問題,逃避<部分,使用htmlentities()

<?php 
    echo htmlentities('<?php'); 
?> 

,當它得到呼應,將導致HTML來源:哪些顯示在瀏覽器時

&lt;php 

顯示:

<?php

0
echo '<?php ?>'; // prints <?php ?> 
echo "<?php ?>"; // prints <?php ?> 

不,你不需要做任何特別的事情。