2013-07-17 19 views
1

我有將URL傳遞到郵件正文的問題。我用這個:如何將當前網址傳遞給mailto正文

<?php 
function CurrentPageURL() 
{ 
$pageURL = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://'; 
$pageURL .= $_SERVER['SERVER_PORT'] != '80' ? $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER 
["REQUEST_URI"] : $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
return $pageURL; 
} 
?> 

mailto:?body=<?php echo CurrentPageURL(); ?>

而是此鏈接爲結果: http://www.something.com/index.php?id=03new&new=50&lang=en

我得到這個在郵件正文: http://www.something.com/index.php?id=03new

請幫助我如何通過所有鏈接,包括「&」。

THX

+0

[htmlentities()](http://php.net/manual/en/function.htmlentities.php)能幫助你嗎? –

+0

你需要'urlencode()'它。 –

回答

0

'&' 中的mailto用於不同部件,如分離:

&subject=some_subject&body=message_body

所以將被解釋爲用於的mailto(和略)的(無效的)參數。所以如果你想在體內有'&'(和其餘的url),它需要用它們的%值替換。使用像urlencode()這樣的功能將完成這項工作。

<?php 
function CurrentPageURL() 
{ 
... 
return urlencode($pageURL); 
} 
?> 
+0

你可以擴展爲什麼這個解決方案可以解決這個問題嗎? –

+0

就是這樣。很棒。非常感謝Samurai。 – damaki

+0

@Denomales:在'mailto'中使用'&'來分隔不同的部分,例如&subject = some_subject&body = message_body,所以如果你想在body內部有'&',它需要用%值替換,urlencode()完成這個工作。 – Samurai