2016-12-05 18 views
-3

PHPでcURLを使用して別のWebサイトから特定のデータを取得するにはどうすればよいですか? これは私のコードです別のWebサイトからデータを取得する方法

$page = curl_init('http://lookup.cla.base8tech.com/'); 
$encoded =''; 

foreach($_GET as $name=>$value){ 
    $encoded .= urlencode($name) .'=' .urlencode($value).'&'; 
} 
foreach ($_POST as $name=>$value){ 
    $encoded .= urlencode($name) .'=' .urlencode($value).'&'; 
} 
preg_match('!\d+!', $encoded, $zip); 
print_r($zip); 

$encoded = substr($encoded, 0, strlen($encoded)-1); 

curl_setopt($page, CURLOPT_POSTFIELDS, $encoded); 
curl_setopt($page, CURLOPT_HEADER, 0); 
curl_setopt($page, CURLOPT_POST, 1); 
curl_exec($page); 
curl_close($page); 

答えて

0

あなたのコードにいくつかのエラーがあります。まず、あなたの主な質問に答えるために、あなたはcURLリクエストでそれを正しくやっていません。

$ch = curl_init($url); // Set cURL url 

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); // Send request via POST           
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // Set POST data          
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_exec() returns response 
curl_setopt($ch, CURLOPT_HEADER, "Content-Type: application/x-www-form-urlencoded"); 

$response = curl_exec($ch); // Return the request response 
curl_close($ch); 

また、あなたのコードでは、あなたが$encoded = substr($encoded, 0, strlen($encoded)-1);を使用します。cURLを使用してPOSTリクエストを送信し、応答を取得するには、次のコードを使用します。これは必須ではなく、代わりに$encoded = substr($encoded, 0, -1);としてください。

第3に、正規表現は現在無効です。あなたは、文字列の最初と最後に/を追加する必要があります:preg_match('/!\d+!/', $encoded, $zip);

は最後に、あなたのforeachループは完全に必要ありません。代わりにhttp_build_query関数を使用することができます:$encoded = http_build_query($_GET) . "&" . http_build_query($_POST);。これにより、substrの線が無意味になります。

したがって、あなたのようなものをお勧めします:

$encoded = ""; 

// Check to make sure the variables encoded are actually set 
if(!empty($_POST) && !empty($_GET)) { 
    $encoded = http_build_query($_GET) . "&" . http_build_query($_POST); 
} elseif (empty($_POST) && !empty($_GET)) { 
    $encoded = http_build_query($_GET); 
} elseif (!empty($_POST) && empty($_GET)) { 
    $encoded = http_build_query($_POST); 
} else { 
    $encoded = ""; 
} 

$encoded = http_build_query($_GET) . "&" . http_build_query($_POST); 

preg_match('/!\d+!/', $encoded, $zip); 
print_r($zip); 

$ch = curl_init("http://lookup.cla.base8tech.com/"); // Set cURL url 

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); // Send request via POST           
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded); // Set POST data          
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_exec() returns response 
curl_setopt($ch, CURLOPT_HEADER, "Content-Type: application/x-www-form-urlencoded"); 

$response = curl_exec($ch); // Return the request response 
curl_close($ch); 
関連する問題