2016-07-29 49 views
0

目前我正在努力使它如果我的標題包含標題中的&它將通過下面的URL。&標題中的符號中斷變量

dl.php?&u='.$mp3.'&n='.$auth2.' 

目前,我有以下代碼

$auth = urlencode($title2); 
$auth2 = urldecode($auth); 
$title2 = 'Artist - Song Name (Feat. Another Artist & Last Artist)'; 

你可以看到下面的$title2部分含有&符號,如果通過我們的網址下載將這個樣子Artist - Song Name (Feat. Another Artist)留下了最後藝術家在MP3的名字。

感謝任何幫助。

+0

你把'$ title2' var可以在兩條線的頂端?然後會發生什麼? –

+1

'rawurlencode($ title2)' – bishop

+0

@bishop似乎沒有工作..我以前也嘗試過,也不知道我在做什麼錯誤,因爲所有的評論到目前爲止指向基本上已經做了什麼。 – Open

回答

2

您需要先修復網址,以便稍後可以正確解析。使用http_build_queryhttp://php.net/http_build_query,它將正確URLEncode的事情對你

'dl.php?' . http_build_query(array('u' => $mp3, 'n' => $auth2)); 
+0

這種方法似乎解決了我的問題,謝謝! – Open

+0

不客氣。我最喜歡的PHP函數之一 – charmeleon

+0

看起來很方便,相當煩惱,我沒有早點知道它。 – Open

1

如果用urlencode $title2,你不會有這個問題。

$title2 = urlencode('Artist - Song Name (Feat. Another Artist & Last Artist)'); 

或者,您可以使用http_build_query()來構建你的查詢字符串:

$params = [ 
    'u' => $mp3, 
    'n' => $title2 
]; 
$queryString = http_build_query($params); 
$url = 'dl.php?' . $queryString; 
1

你可以這樣做:

dl.php?&u='.urlencode($mp3).'&n='.urlencode($title2).'

這將編碼標題和URL會像這樣:

dl.php?&u=MP3contentwillcomehere&n=Artist+-+Song+Name+%28Feat.+Another+Artist+%26+Last+Artist%29

或者您也可以使用http_build_query

$mp3 = "MP3 content"; 
$name = "Artist - Song Name (Feat. Another Artist & Last Artist)"; 
$build = http_build_query(array('u' => $mp3, 'n' => $name)); 

將輸出: U = MP3 +內容& N =藝術家+ - +歌+姓名+%28Feat +另+藝術家+%26 +最後+藝術家%29

"dl.php?".$build;