2011-04-07 175 views
1

我有一個瀏覽器顯示解碼html實體的問題。 我試圖顯示來自WordPress博客的博客描述。文本在被保存在數據庫之前被編碼爲html實體。因此,爲了顯示超鏈接,文本必須是html實體解碼的,所以a-tag被正確渲染。html_entity_decode不解碼

但是,當我嘗試解碼文本它仍然作爲html實體出來。

被解碼之前的輸出:

echo(bloginfo('description')); //output: Display a hyper link. <a href="">READ MORE</a> 

當被解碼的輸出。這是我的問題。它仍然沒有解碼!檢查輸出。

echo(html_entity_decode(bloginfo('description'))); //output: Display a hyper link. <a href="">READ MORE</a> 

而當我嘗試硬編碼要解碼的文本,它的工作原理!

echo(html_entity_decode('Display a hyper link. &lt;a href=""&gt;READ MORE&lt;/a&gt;')); //output: Display a hyper link. <a href="">READ MORE</a> 

我看了一下php手冊,並嘗試了不同的字符集和引用樣式作爲參數。但仍然沒有運氣。

我做錯了什麼,有什麼想法?

回答

5

bloginfo函數不返回文本,它直接回聲。因此,你的「回聲」實際上不會迴應!

改爲使用get_bloginfo

+0

關閉當然! Tack Emil! – Tjofras 2011-04-07 09:04:25

2

你應該閱讀WordPress的手動:)

它明確指出它打印結果到瀏覽器中,使用get_bloginfo代替。 http://codex.wordpress.org/Function_Reference/bloginfo

爲了清楚起見,它不工作,因爲bloginfo echo的信息,它根本沒有返回它。你可以通過檢查(通過使用var_dump)bloginfo的返回值來測試它。

+0

當然,謝謝! – Tjofras 2011-04-07 09:04:41

0

您確定bloginfo不會再次對字符進行編碼嗎?

如果它重新編碼它們,你的html_entity_decode將簡單地恢復到它們原來的狀態(它被編碼)。