我有一个链接被发送抛出一些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 \
答案 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);