2016-04-13 43 views
0

单引号我有一个发送抛出一些PHP的链接:转义URL链接

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

$galerry链接到另一个页面。

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

而且该机制正常工作,直到其中一个元素ID有一个单引号。这是有道理的,因为它会中断回波功能。

这就是为什么我有apastro功能:

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

然而,单引号前\是没有帮助...

因此,可以说该链接重定向到id元素= “L'ARO”页面something.php 然后将URL something.php#1 \

+1

这应有助于:http://stackoverflow.com/questions/6269188/how-to-escape-only-single-quotes – VikingBlooded

+1

你可以用'urlencode()来' – Daan

+0

@Daan唉唉感谢的人;) – Jackymamouth

回答

-2

如果你想远离单引号仅,使用双反斜线,如下

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

它会中断回声功能

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

\不是URL或HTML的转义字符。使用urlencode可以将字符串安全地放入URL中。

使用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>"; 
+0

这是你会得到的最好答案。我经常用这个。 –