2011-01-30 40 views
1

當我在字符串之前添加'小於<'時,會發生Whan,因爲在前面的字符串已經消失[didn'時間顯示,當我呼應他們在我PHP代碼。當在字符串前添加「<」時,它不再顯示

E.g: 
$search = trim('wdisappear W'); // all the words were disappeared when < in front 
$search = explode(" ", $search); // 
$sizeof_search = count($search); // 


for($i = 0; $i < $sizeof_search; $i++){ 
    $l = strlen($search[$i]); 
    echo '<'.$search[$i].'<'.$l; 
} 

當我在打開PHP文件火狐'wdisappear W'沒有出現!爲什麼??

我怎樣才能把

<

在前面?

非常感謝!

回答

7

這是因爲<打開一個html元素。這會導致部分文本不可見,因爲FF認爲它是HTML標記。通過輸出&lt; html實體來逃脫它,或使用htmlspecialchars函數來爲您逃避輸出。

+0

如果您查看頁面源代碼,您應該看到正確的輸出,它只是瀏覽器中的html解析器,試圖理解它。 – xzyfer 2011-01-30 10:20:34

4

默認情況下,PHP提供內容爲text/html,並在HTML <中打開標記。因此,您的內容被解釋爲無效標籤,不會顯示。你應該使用&lt;來逃避它。還有其他保留字符,需要編碼。您可以使用htmlspecialchars一次完成所有操作。

此外,您可以提供您的內容爲text/plain,這不需要任何轉義。 (在不利的情況下,顯然不能使用HTML。)

3

字符<在HTML中作爲標記的開始有特殊含義。請致電htmlspecialchars<轉換爲HTML實體&lt;,以便它在瀏覽器中正確顯示。您可能還想調用此值爲$search[i],否則可能會在應用程序中留下cross-site scripting漏洞。

試試這個:

echo htmlspecialchars('<' . $search[$i] . '<' . $l); 

從文檔:

某些字符在HTML中具有特殊的意義,並應由HTML實體,如果他們要維護自己的意思表示。該函數返回一個字符串,其中包含一些轉換;翻譯是對日常網絡編程最有用的。

相關問題