【问题标题】:How to extract and assign data from cURL output?如何从 cURL 输出中提取和分配数据?
【发布时间】:2010-12-15 16:19:02
【问题描述】:

代码:

function GetCurlPage ($pageSpec)
{
$ch = curl_init($pageSpec);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$tmp = curl_exec ($ch);
curl_close ($ch);
$tmp = preg_replace('/(?s)<meta http-equiv="Expires"[^>]*>/i', '', $tmp);
return $tmp;
}

$url = "https://www.domain.com/check.php?domain=" .
$domain . "&suffixes=" . $suffixes . "&fuzzysearch=" . $fuzzysearch;
$output = GetCurlPage("$url");

print $output;

它输出 3 行 html,但是我想为每一行分配一个变量,然后用它做一些事情......

即:

if ($line_1_of_output=="Hi")
{
"do something"
}

if ($line_2_of_output=="Hi")
{
"do something else"
}

如果这是最好的方法,我如何在 XML 中输出它自己的变量中的每一行?

谢谢!

【问题讨论】:

    标签: php xml curl


    【解决方案1】:

    除非我误解了你,否则你可以直接分解 cURL 的输出,然后循环遍历数组。

    <?php
    // cURL code...
    $tmp = explode("<br>", $tmp);
    
    foreach ($tmp AS $lnum => $line) {
      var_dump($line);
      echo '<br>';
    }


    试试这个:

    function GetCurlPage ($pageSpec)
    {
      $ch = curl_init($pageSpec);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
      $tmp = curl_exec ($ch);
      curl_close ($ch);
      $tmp = preg_replace('/(?s)<meta http-equiv="Expires"[^>]*>/i', '', $tmp);
      $tmp = explode('<br>', $tmp);
    
      // Test the array.
      foreach ($tmp AS $line) {
        echo '<pre>';
        print_r($line);
        echo '</pre>';
      }
    
      // Do something with each line.
      $tmp[0] = str_replace('foo', 'bar', $tmp[0]);
      $tmp[1] = str_replace('animal', 'monkey', $tmp[1]);
      $tmp[2] = str_replace('cat', 'dog', $tmp[2]);
    
      return $tmp;
    }

    【讨论】:

    • 那么这会将每一行输出到 3 个单独的变量中,然后我可以使用 if 语句进行检查吗?
    • 一旦被 \n 分解,每一行都是 $tmp 中的一个单独元素(例如 $tmp[0]、$tmp[1]、$tmp[2])
    • 好的,我已经尝试过测试 tmp 数组的输出。foreach ($tmp AS $lnum => $line) { echo $tmp[0]; } 没有输出:/
    • 嗯,它只是在调用 $tmp[0] 或数组中的任何位置时不输出特定的行
    • 可能cURL的输出有不同的行格式。改用 \r,如果不起作用,\r\n
    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    相关资源
    最近更新 更多