&安培;标题符号变量中的符号

时间:2016-07-29 14:50:20

标签: php

目前我正在努力使其如果我的标题在标题中包含&,它将通过下面的网址。

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名称中

感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您需要先修复此网址,以便以后可以正确解析。使用http_build_queryhttp://php.net/http_build_query,它会为您正确地编码内容

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

答案 1 :(得分: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;

答案 2 :(得分:1)

你可以这样做:

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

这会对您的标题和网址进行编码,如下所示:

<强> 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;