由于url错误,php curl失败

由于url错误,php curl失败,php,curl,Php,Curl,我编写了一个脚本,将一些数据发送到外部服务器。到目前为止一切正常。问题是,当我通过一个变量构建url时(这是必要的),post请求将不会成功。当我呼出两个变量时,它们是完全相同的。$action变量通过数组传递,其值为/index.php?param=value $regexp = '/<form(.*?)action="(.*?)"(.*?)>(.*?)<\/form>/'; preg_match_all($regexp, $body, $form); $action

我编写了一个脚本,将一些数据发送到外部服务器。到目前为止一切正常。问题是,当我通过一个变量构建url时(这是必要的),post请求将不会成功。当我呼出两个变量时,它们是完全相同的。
$action
变量通过数组传递,其值为
/index.php?param=value

$regexp = '/<form(.*?)action="(.*?)"(.*?)>(.*?)<\/form>/';
preg_match_all($regexp, $body, $form);

$action = $form[2][0];

$url = 'https://www.homepage.com/index.php?param=value';    // success
$url = 'https://www.homepage.com'.$action;                  // no success

$post_data = array(
        'param1' => 'value1',
        'param2' => 'value2'
);

$data = array(
        'url'       => $url,
        'post_data' => $post_data
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt($ch, CURLOPT_ENCODING, "" );
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd () . '/cookie.txt' );
curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd () . '/cookie.txt' );
curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);
编辑

当我做

$url_1  = 'https://www.homepage.com/index.php?param=value';    // success
$url_2  = 'https://www.homepage.com'.$action;                  // no success

if ($url_1 == $url_2) {
    echo 'MATCH';
} else {
    echo $url_1.'_';
    echo $url_2.'_';
}

我得到了else语句。所以他们不一样。但他们看起来一模一样\uu用于处理空格。

$action的值是多少?@LuckyChingi
$action
的值是
/index.php?param=value
您还可以将$form的值发送给我吗?我正在我的电脑上检查pc@LuckyChingi我不能给你这个,因为这是一个敏感的数据。但正如我所说,
$form[2][0]
的值是正确的。以未成功的方式运行该脚本后,我回显了
$url
。然后我使用了这个字符串,并将其替换为脚本中的
$url
,它成功了。因此,可能
$action
的格式不正确,或者不是字符串或类似的东西。您所描述的几乎是不可能的。bin2hex()这两个变体告诉我,bin2hex()编码的字符串是否完全相同?可能存在难以识别的编码、空格或换行符差异
$url_1  = 'https://www.homepage.com/index.php?param=value';    // success
$url_2  = 'https://www.homepage.com'.$action;                  // no success

if ($url_1 == $url_2) {
    echo 'MATCH';
} else {
    echo $url_1.'_';
    echo $url_2.'_';
}