在url链接中转义单引号

时间:2016-04-13 13:45:39

标签: php html

我有一个链接被发送抛出一些php:

echo "<a href='" . $galerry . "#" . apastro(get_title($primid)) . "'     class='linkorange'>voir sa galerie</a>";

$galerry链接到另一个页面。

get_title($primid)$galerry页面中特定元素的ID。

并且该机制正常工作,直到其中一个元素id中包含单引号。这有意义,因为它会中断回声功能。

这就是我有apastro功能的原因:

function apastro($phrase){
$phrase1 = str_replace("'","\'",$phrase);
return $phrase1;
}

然而在单引号之前没有帮助......

所以让我们说链接重定向到页面上的id =“l'aro”的元素something.php 然后url将是something.php #l \

2 个答案:

答案 0 :(得分:5)

  

它会中断回声功能

不会。它会破坏由'个字符分隔的字符串文字,但您的字符串文字用"个字符分隔。在这种情况下,它会破坏 '个字符分隔的HTML属性值。

\不是网址或HTML的转义字符。

使用urlencode使字符串安全放入网址。

使用htmlspecialchars使字符串安全放入HTML属性。

$title = get_title($primid);
$urlsafe_title = urlencode($title);
$url = $galerry . "#" . $urlsafe_title;
$htmlsafe_url = htmlspecialchars($url, ENT_QUOTES | ENT_HTML5);

echo "<a href='$htmlsafe_url' class='linkorange'>voir sa galerie</a>";

答案 1 :(得分:-2)

如果您想要仅使用单引号,请使用双反斜杠,如下所示

$str = str_replace("'", "\\'", $str);