&;标题分隔变量中的符号


& symbol in title breaking variable

目前我正在尝试制作它,以便如果我的标题中包含&,它将通过下面的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;