curl_exec 拉错 HTML vs 传递给 curl_init 的字符串

curl_exec pulling wrong HTML vs string passed to curl_init

我的 curl 请求字符串是以编程方式创建的,其中包含来自数据库的基数 URL 和作为页码的整数。 URL 的字符串是正确的。如果我调用 curl 请求并将基数 URL 复制到函数中,它就可以工作。如果我使用以编程方式创建的字符串(相同)调用它,则会调用错误的页面 - 它似乎缺少字符串中的参数之一(从属关系):

这 运行 多年来一直没有问题。服务器是PHP 5.6。数据库中的字符串存储为 varchar(500)。我已经尝试将 TEXT 作为数据库中的类型。我已经尝试了各种在函数中强制使用字符串的方法。下面的第一个 $testurl 是从第二个 $testurl 复制并粘贴的,如果我在进行 curl 调用之前获得了回显它的代码。

//choose one of the $testurls to try
$testurl = 'https://log.concept2.com/challenges/holiday/2019/honorboard/200?country=0&state=&affiliation=1397&sort=distance&page=2';
//In this... $url comes from the database, $gotopage comes from a loop
$testurl = (string)($url . $gotopage);
$c = curl_init($testurl)
$str = curl_exec($c);
curl_close($c);
echo $str; 
die;

第一个$testurl returns我想要的,同组人员名单。 第二个 $testurl returns 属于任何隶属关系的人员列表。

编辑

var_dump($testurl) 给出:

string(134) "https://log.concept2.com/challenges/holiday/2019/honorboard/200?country=0&state=&affiliation=1397&sort=distance&page=2"

完整代码更具挑战性。 $GoToPage 是一个整数。 $url 是从数据库中提取的。相关行是:

$url = $challenge['mb2_Challenges']['challenge_url'];

$challenge 是从 mysqli 创建的 SELECT... FROM... WHEN... 使用 SQL 查询。 mb2_Challenges就是table,challenge_url就是table。

对于像我一样愚蠢的人,这里是答案:

脚本中的字符串经过 urlencoded,因此 & 而不是 &。我太急于发现这一点了。它只需要 htmlspecialchars_decode.

经验教训:始终查看源代码!