2016-07-29 34 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;