2014-01-07 63 views
-1

我使用SimpleXML來讀取節點,並回顯圖像文件名稱。使用的foreach,我打印出來:使用SimpleXML隱藏字符輸出圖像src

assets/project_Guide2Big1.jpg 
assets/​project_Guide2Big2.jpg 
assets/​project_Guide2Big3.jpg 
assets/​project_Guide2Big4.jpg 
assets/​project_Guide2Big5.jpg 

我插入這些值代入我的img標籤,但不顯示圖像,除了第一個。

我複製 「資產/ project_Guide2Big1.jpg」 在瀏覽器中。我看到了圖像,但是當我複製「assets/project_Guide2Big2.jpg」時,地址變爲此 資產/%E2%80%8BprojectGuide2Big2.jpg。

它看起來像一些urlencoding(?)。我試圖解碼,但我的圖像仍然無法正常工作。這太奇怪了。

是沒有的%E2%80%8B從何而來?

+0

似乎斜槓後有一些額外的隱藏字符。檢查你的xml文件。 – Ahmad

+0

但爲什麼它只會影響2,3,4和5.第一個閱讀乾淨。它爲什麼不顯示在視圖源中。真是莫名其妙。 – artSir

+0

也許第一個沒有任何額外的字符! – Ahmad

回答

1

這看起來很像代表你沒想到的是有一些Unicode字符爲UTF-8字符序列。

使用this online converter,我們可以看到UTF-8字節E2808B的序列表示Unicode代碼點U + 200B,它是「零寬度空間」。

因此,不管怎樣,您的源XML在斜線後包含一個不可見的字符。當回顯到屏幕時,它完全不可見 - 即使在查看源代碼時也是如此,因爲源代碼仍然只是文本。但是當您嘗試加載URL時,該字符超出了URL的有效範圍,因此會被瀏覽器自動編碼。

你可能想知道一個零寬度空間的點是什麼,但考慮自動換 - 功能 - 他們可能會尋找一個空間來打破,但一個URL不包含空格。因此,插入零寬度空間使文本看起來相同,但允許它在該特定點處換行。另一個對此有用的字符是「軟連字符」,它具有精美的實體名稱­--正如我的一位朋友所說的那樣,「軟連字符很害羞,可能不會出現」。 :)

+0

是的,我只是現在意識到,當我查看源代碼並檢查無效圖像時,它給了我%E2%80%8B的路徑,必須有一些PHP的安全編碼,我會谷歌搜索它。 – artSir

+0

這不是關於它如何編碼,而是需要刪除字符串中的字符。編碼只是使它更加明顯 - 甚至是不可見的,這將是錯誤的URL。 – IMSoP