我正在以纯文本形式获得API响应。我需要从该文本响应中获取数据并需要将它们存储为变量。
API调用:
$url="http://91.101.61.111:99/SendRequest/?mobile=9999999999&id=11011&reqref=501";
$request_timeout = 60;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $request_timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $request_timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$curl_error = curl_errno($ch);
curl_close($ch);
纯文本API响应:
REQUEST ACCEPTED your ref=501 system_reference=BA01562
我需要从上面的纯文本响应中获取数据作为变量,如下所示:
$status = "REQUEST ACCEPTED";
$myref = "501";
$sysref = "BA01562";
我试过了:
$explode1 = explode(" ", $output);
$explode2 = explode("=", $explode1[3]);
$explode3 = explode("=", $explode1[4]);
$status = $explode1[0]." ".$explode1[1];
$myref = $explode2[1];
$sysref = $explode3[1];
我知道这不是一个正确的方法。但由于我是新手,我无法弄清楚这样做的正确方法。
请帮忙!谢谢!
答案 0 :(得分:1)
您可以使用preg_match,例如:
$rc = preg_match('/([\w\s]+) your ref=([\d]+) system_reference=([\w]+)/', $plain_response, $matches);
if ($rc)
{
$status = $matches[1];
$myref = $matches[2];
$sysref = $matches[3];
}
但当然,正如@ Don的恐慌所说,你需要更多的API知识,以确保解析。我给出的例子有点幼稚。无论如何,当您确定格式时,请使用regexp和preg_match。