2016-04-13 45 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

這是你會得到的最好答案。我經常用這個。 –