2013-07-25 59 views
1

比方說,如果我有這樣的代碼如何使用A HREF同時使用的htmlspecialchars

$text = "please visit this <a href="http://example.com">site</a>." 
$text = htmlspecialchars($text); 
echo $text; 

所以它的輸出將是please visit this <a href="http://example.com">site</a>. 但我想是這樣的
輸出請訪問該site。 有沒有辦法看看它是否是一個href然後做一些事情? 謝謝。

+0

將函數放入變量值中,如果不喜歡將所有字符串傳遞給它。也可以跳過引號 –

+0

更改字符串中的引號。將整個字符串用單引號括起來。應該是'請訪問這個site'。或者像皇家說的那樣逃脫你的引用。 – Woodifer

+0

請勿轉義數據。使用基於DOM的XSS文件,將可接受的元素和屬性列入白名單。 – Quentin

回答

1

你的字符串定義不好(正如你可以通過語法高亮顯示的那樣)。 因爲您需要功能性HTML,您實際上不需要在此實例中轉義任何內容。

您可以使用轉義字符,像這樣:

$text = "please visit this <a href=\"http://example.com\">site</a>." 
            ^- escape here  ^- and here 

有時你可以用一組不同的報價,喜歡閃避:

// use single quote 
$text = 'please visit this <a href="http://example.com">site</a>.' 

另一種可能性是HEREDOC符號:(StackOverflow上沒有按無法識別語法)

$text = <<<DELIM 
please visit this <a href="http://example.com">site</a>. 
DELIM; 
+0

儘管這是個好建議,但它並沒有回答這個問題(它是關於轉義(HTML)特殊字符,同時仍然允許輸入包含HTML鏈接)。 – Quentin

2

只能轉義URL本身:

$text = 'please visit this <a href="' . htmlspecialchars('http://example.com') . '">site</a>.' 

注意單引號和雙引號之間的切換。