我被提供了一組表示URL鏈接的數據。如:"doug'sfood.jpg"
。PHP撇號跳過了打破鏈接
。
我一直在數組這些字符串,然後選擇他們隨機顯示它們插入到一個
<img src="doug'sfood.jpg"></img>
什麼瀏覽器是放出來的是:
<img src="doug'sfood.jpg"></img>
我試圖取代報價一個PHP逃脫(\'
)撇號,但這只是過早地結束了報價。
有人可以幫助我嗎?謝謝。
我被提供了一組表示URL鏈接的數據。如:"doug'sfood.jpg"
。PHP撇號跳過了打破鏈接
。
我一直在數組這些字符串,然後選擇他們隨機顯示它們插入到一個
<img src="doug'sfood.jpg"></img>
什麼瀏覽器是放出來的是:
<img src="doug'sfood.jpg"></img>
我試圖取代報價一個PHP逃脫(\'
)撇號,但這只是過早地結束了報價。
有人可以幫助我嗎?謝謝。
我認爲Chrome會自動轉義未正確轉義的字符。
始終使用:
<img src="quote'quote.jpg" alt="" />
相反的:
<img src="quote'quote.jpg" alt="" />
某些字符應始終HTML轉義,例如:)
檢查用htmlspecialchars(和urlencode()個功能,例如:
$string = "quote'quote.jpg";
echo htmlspecialchars($string, ENT_QUOTES);
// quote'quote.jpg
echo urlencode($string);
// quote%27quote.jpg
嘗試此...雖然這是什麼的輸出反正所以它不是我想要的。文件的名稱實際上包含一個撇號... – kirk 2011-04-21 22:16:48
如果HTML代碼引用'quote ' quote.jpg',則瀏覽器實際下載'quote'quote.jpg'。爲了生成有效的HTML,總是輸出'quote ' quote.jpg'。瀏覽器在渲染頁面時將'''轉換爲'''。 – Anne 2011-04-21 22:22:02
這工作,並在同一時間打破的東西。也就是說,它確實也是它所需要的,但是我意識到我給出的圖像與兩種方式中的數據集都不匹配。在兩種可能的情況下,一些數據具有撇號,而在另一個位置則相反。我剛剛刪除了撇號,客戶可以處理......謝謝。 – kirk 2011-04-21 22:27:10
不管怎樣,打印出的文件名的標籤時,使用urlencode()
而不是依賴於HTML逃逸或瀏覽器行爲:
foreach ($img as $href) {
print '<img src="' . urlencode($href) . '" />';
}
這將成爲你的榜樣doug%27sfood.jpg
(又名正確的方式來做到這一點)。希望可以通過您的網絡服務器找到它。
可能只是我的偏好,但[htmlentities](http://php.net/htmlentities)在html/xhtml/xml標籤中比'urlencode'更有意義。當我解析標題/重定向時,我會使用urlencode。 – 2011-04-21 22:27:26
非常感謝你,如果你閱讀上面的內容,你會發現我選擇刪除撇號並放棄代碼。 – kirk 2011-04-21 22:27:50
@凱文:其實:**都是**。瀏覽器會在網址中自動編碼非ASCII字符。只需要在QS屬性中正確編組'''''''或'#'。但HTML轉義對於有效的HTML/XHTML同樣是一個要求。 (大多數ASCII的鏈接都沒有這兩個,邊緣情況很少。) – mario 2011-04-21 22:31:01
缺少內容類型等。如果沒有這些,就無法真正回答。我的猜測是,鉻正在糾正它是有效的XML(因爲特殊字符不需要轉義) – 2011-04-21 22:08:44
內容類型?它們是.jpg字符串。 $ arr = array(「doug'sFood.jpg」);回聲「」; – kirk 2011-04-21 22:11:27
頁面本身的內容類型以及文檔類型/模式(HTML與XHTML與XML)。 – 2011-04-21 22:12:03