2013-02-16 31 views
0

我在寫代碼: <?PHP $where='<something'; echo $where; ?> 但它沒有迴應任何東西,直到我改變字符串$到哪裏去'<東西'(在「<」之後加一個空格),爲什麼?爲什麼字符串變量「<something」不能在php中輸出?

它可能編譯<到一些標記語言的開始。

+0

不回,或者不出現* *呼應?檢查頁面源。 – 2013-02-16 02:37:49

+0

您是否試過'「<東西」而不是? – didierc 2013-02-16 02:38:46

+0

適合我:http://codepad.org/oUVy5M1D。 – 2013-02-16 02:50:13

回答

1

小於<和大於>標誌是html實體或用於表示html標籤的保留符號。要顯示它們,您需要使用實體名稱或實體編號。在「小於」的情況下,它們分別是<和<。

因此改變你的代碼是這樣的:

$where='&lt;someting'; echo $where; 

或更好,但

$where='&lt;someting'; echo htmlentities($where); 

如正確地@Waleed卡恩建議。

+0

或更好 - 'echo htmlentities($ where)'。 – 2013-02-16 02:38:55

+0

你可能想解釋爲什麼你這樣做。 (考慮到他甚至提出了這個問題) – 2013-02-16 02:39:48

+0

謝謝你,&lt;並且hmmlentities也工作。 – Leonardo 2013-02-16 02:43:57

0

在瀏覽器中,<引入了HTML標記。如果您的字符串是$where = "<img"你可能最終的東西是這樣的:

Image http://example.com/

每當你輸出文本,你應該總是要麼運行htmlentitieshtmlspecialchars或者只是str_replace("<","&lt;",$where);從正在處理中逃脫HTML(中最後一個仍然會允許&個字符;)

0

這是因爲瀏覽器將前括號<視爲HTML標記。在瀏覽器中,右鍵單擊頁面並選擇「查看源代碼」。

如果你有一個終端,那麼你可以使用:

php -f file.php 

將輸出的原始內容,而不對它進行分析。

如果你想看到的代碼在瀏覽器中,那麼你需要使用類似htmlentities()來編碼HTML字符:

$where = '<something'; 
echo htmlentities($where); // &lt;something 
相關問題