目前我正在尝试制作它,以便如果我的标题中包含&
,它将通过下面的url。
dl.php?&u='.$mp3.'&n='.$auth2.'
目前我有以下代码
$auth = urlencode($title2);
$auth2 = urldecode($auth);
$title2 = 'Artist - Song Name (Feat. Another Artist & Last Artist)';
你可以在下面看到,$title2
部分包含一个&
符号,如果它通过我们的URL,下载将看起来像这个Artist - Song Name (Feat. Another Artist)
,省略了MP3名称中的最后一位艺术家。
感谢您的帮助。
您需要先修复URL,以便以后正确解析。使用http_build_query
:http://php.net/http_build_query,它将为您正确地对事物进行url编码
'dl.php?' . http_build_query(array('u' => $mp3, 'n' => $auth2));
您可以这样做:
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=艺术家+-+歌曲+姓名+%28特点+另一位+艺人+%26+最后一位+歌手%29
"dl.php?".$build;
如果对$title2
进行url编码,则不会出现此问题。
$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;