我在寫代碼: <?PHP $where='<something'; echo $where; ?>
但它沒有迴應任何東西,直到我改變字符串$到哪裏去'<東西'(在「<」之後加一個空格),爲什麼?爲什麼字符串變量「<something」不能在php中輸出?
它可能編譯<到一些標記語言的開始。
我在寫代碼: <?PHP $where='<something'; echo $where; ?>
但它沒有迴應任何東西,直到我改變字符串$到哪裏去'<東西'(在「<」之後加一個空格),爲什麼?爲什麼字符串變量「<something」不能在php中輸出?
它可能編譯<到一些標記語言的開始。
小於<
和大於>
標誌是html實體或用於表示html標籤的保留符號。要顯示它們,您需要使用實體名稱或實體編號。在「小於」的情況下,它們分別是<和<。
因此改變你的代碼是這樣的:
$where='<someting'; echo $where;
或更好,但
$where='<someting'; echo htmlentities($where);
如正確地@Waleed卡恩建議。
或更好 - 'echo htmlentities($ where)'。 – 2013-02-16 02:38:55
你可能想解釋爲什麼你這樣做。 (考慮到他甚至提出了這個問題) – 2013-02-16 02:39:48
謝謝你,&lt;並且hmmlentities也工作。 – Leonardo 2013-02-16 02:43:57
在瀏覽器中,<
引入了HTML標記。如果您的字符串是$where = "<img"
你可能最終的東西是這樣的:
每當你輸出文本,你應該總是要麼運行htmlentities
,htmlspecialchars
或者只是str_replace("<","<",$where);
從正在處理中逃脫HTML(中最後一個仍然會允許&個字符;)
這是因爲瀏覽器將前括號<
視爲HTML標記。在瀏覽器中,右鍵單擊頁面並選擇「查看源代碼」。
如果你有一個終端,那麼你可以使用:
php -f file.php
將輸出的原始內容,而不對它進行分析。
如果你想看到的代碼在瀏覽器中,那麼你需要使用類似htmlentities()
來編碼HTML字符:
$where = '<something';
echo htmlentities($where); // <something
不回,或者不出現* *呼應?檢查頁面源。 – 2013-02-16 02:37:49
您是否試過'「<東西」而不是? – didierc 2013-02-16 02:38:46
適合我:http://codepad.org/oUVy5M1D。 – 2013-02-16 02:50:13