2017-06-06 27 views
0

我是新来的PHP整个curl库,并成功地使用下面的代码sucesfully得到来自网站发布数据:保存CURL结果在一个变量PHP

<?php 
    $postcode="6942GJ"; 
    $huisnummer="8"; 
    $marktsegment="27"; 
    $aansluiting="-"; 
    $url="http://notimportantforstackoverflow.com"; 
    $postdata = "postcode=".$postcode."&huisnummer=".$huisnummer."&marktsegment=".$marktsegment."&aansluiting=".$aansluiting; 
    $ch = curl_init(); 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    $result = curl_exec ($ch); 
    curl_close($ch); 
    ?> 

至极返回如下表:

<table cellspacing="1" cellpadding="1" border="0"> 
 
\t \t <tbody><tr valign="bottom"> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Ean code aansluiting 
 
\t \t \t </td> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Straatnaam 
 
\t \t \t </td> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Huisnr. 
 
\t \t \t </td> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Huisnr. toev. 
 
\t \t \t </td> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Woonplaats 
 
\t \t \t </td> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Postcode 
 
\t \t \t </td> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Bijzondere aansluiting 
 
\t \t \t </td> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Markt segment 
 
\t \t \t </td> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Naam Netbeheerder 
 
\t \t \t </td> 
 
\t \t \t <td class="resultHeader"> 
 
\t \t \t \t Ean Netbeheerder 
 
\t \t \t </td> 
 
\t \t </tr> 
 
\t \t <tr height="1"> 
 
\t \t \t <td bgcolor="#FFFFFF" colspan="10"></td> 
 
\t \t </tr> 
 
\t \t <tr height="1"> 
 
\t \t \t <td bgcolor="#FEEAD3" colspan="10"></td> 
 
\t \t </tr> 
 
\t \t <tr height="2"> 
 
\t \t \t <td colspan="4"></td> 
 
\t \t </tr> 
 
\t \t \t <tr bgcolor="#E5F0E7"> 
 
\t 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t 871687140007253845 \t \t \t </td> 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t Pittelderstraat \t \t \t </td> 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t 8 \t \t \t </td> 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t \t \t \t \t \t &nbsp; 
 
\t \t \t \t \t \t \t </td> 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t DIDAM \t \t \t </td> 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t 6942GJ \t \t \t </td> 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t NEE \t \t \t </td> 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t \t \t \t \t \t GAS 
 
\t \t \t \t \t \t \t </td> 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t Liander NB \t \t \t </td> 
 
\t \t \t <td class="resultData"> 
 
\t \t \t \t 8716871000002 \t \t \t </td> 
 
\t \t </tr> 
 
\t \t \t </tbody></table>

我想和所得到的数据专门生成的字符串“Liander NB”我想打一个变种工作从这样的结果中,像这样$ beheerder =“Liander NB”;但是我不知道如何从生成的CURL数据中生成一个变量。

+1

您忘记了URL编码变量。如果说$ aansluiting包含空格或&或<>特殊字符,则会获取错误的URL。请查看'urlencode()',或者更好的'http_build_query' – hanshenrik

回答

1

使用CURLOPT_RETURNTRANSFER选项可使curl_exec()返回响应。

curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
$result = curl_exec ($ch); 

然后你可以使用DOMDocument解析HTML的响应,其方法找到你的HTML想要的信息。

0

谢谢Barmar,我添加了returntransfer。 对PHPSimpleDOM解析器使用了一个稍微不同的方法,但结果是一样的,我发现它更容易处理,而不是DomDocument。

<?php 
$postcode  = ($_POST['postcode']); 
$huisnummer = ($_POST['huisnummer']); 
$marktsegment = "27"; 
$aansluiting = "-"; 
$url   = "xxxxxxxxx"; 
include('simple_html_dom.php'); 


$postdata = "postcode=" . $postcode . "&huisnummer=" . $huisnummer . "&marktsegment=" . $marktsegment . "&aansluiting=" . $aansluiting; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); 


// Create a DOM object 
$dom = new simple_html_dom(); 
// Load HTML from a string 
$dom->load(curl_exec($ch)); 

$gasleverancier = $dom->find('td', 38)->plaintext; // zero based index selector 

$gasleverancier = trim($gasleverancier);