PHP撇号逃脱了破坏链接

时间:2011-04-21 22:05:10

标签: php html escaping

我获得了一组代表URL链接的数据。例如:"doug'sfood.jpg"

我将这些字符串保存在一个数组中,然后随机选择它们以显示将它们插入到

<img src="doug'sfood.jpg"></img>

Chrome推出的内容是:

<img src="doug&#39;sfood.jpg"></img>

我尝试用php转义(\')撇号替换引号,但这只是过早地结束了引用。

有人能帮助我吗?感谢。

2 个答案:

答案 0 :(得分:2)

我认为Chrome会自动转义未正确转义的字符。

始终使用:

<img src="quote&#39;quote.jpg" alt="" />

而不是:

<img src="quote'quote.jpg" alt="" />

某些字符应始终以HTML格式转义,例如:

' -> &#39;
& -> &#38; or &amp;

检查 htmlspecialchars() urlencode()函数,例如:

$string = "quote'quote.jpg";

echo htmlspecialchars($string, ENT_QUOTES);
// quote&#039;quote.jpg

echo urlencode($string);
// quote%27quote.jpg

答案 1 :(得分:0)

无论如何,在打印出文件名标签时,请使用urlencode()而不是依赖HTML转义或浏览器行为:

foreach ($img as $href) {
    print '<img src="' . urlencode($href) . '" />';        
}

在您的示例中,这将成为doug%27sfood.jpg(AKA是正确的方法)。希望您的网络服务器可以找到它。