Php 如何检索字符串中的某些数据?

Php 如何检索字符串中的某些数据?,php,html,curl,Php,Html,Curl,您好,我可以知道如何检索字符串中的数据吗 $url = 'test url'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $info = curl_getinfo($ch)

您好,我可以知道如何检索字符串中的数据吗

$url = 'test url';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$info = curl_getinfo($ch);
$response = curl_exec($ch);
curl_close ($ch);

echo 'Response: ';
echo gettype($response);
echo '<br>';

echo($response);

正如您所看到的,代码的输出如上所示。这是我第一次遇到这种输出,因为通常我会得到json作为输出。所以我的问题是,我是否知道如何在输出中检索RESPONSE_消息,或者我是否知道如何将输出转换为array或json,以便轻松检索数据。很抱歉问这个问题,我对这个PHP和CURL函数非常陌生。

您可以在foreach中将行分解为行并将行分解为部分。
编辑:我意识到“响应:”实际上是手动输出的。
将代码改为从第二个项切片数组

foreach(array_slice(explode("\n", $str), 1) as $line){
    $temp = explode("=", $line);
    $res[$temp[0]] = $temp[1];
}
输出:

array(8) {
  ["TRANSACTION_ID"]=>
  string(6) "abc123"
  ["MERCHANT_ACC_NO"]=>
  string(7) "M213213"
  ["TXN_STATUS"]=>
  string(1) "A"
  ["TRAN_DATE"]=>
  string(10) "2020-07-20"
  ["CAPTURE_DATE"]=>
  string(10) "2020-07-20"
  ["SALES_DATE"]=>
  string(11) "2020-07-20 "
  ["RESPONSE_CODE"]=>
  string(1) "1"
  ["RESPONSE_MESSAGE"]=>
  string(7) "Success"
}

而不是
echo($response)能否请您尝试
echo';var_dump($response)
它将为您提供响应的详细信息和数据。使用
explode(“\n”,$response)
将字符串拆分为换行字符处的数组。如果响应纯粹是字符串,则可以使用
strstr()
函数和
explode()
。比如:
$message=explode(“=”,strstr($your\u response\u here,“response\u message”))[1]
。它将为您提供回复信息中包含的字符串。您好,感谢您回复AnkitSingh和Barmar。事实上,我不想使用爆炸函数,但只要我得到数据,我想我会使用Andreas方法,它仍然是可以的。再次感谢:先生,你真的帮了我的忙。非常感谢@Giorno我看到sales date中有一个额外的空格,不确定这是复制粘贴错误还是什么。但是您可以通过将行更改为
$res[$temp[0]]=trim($temp[1])来清除这些内容再次感谢@Andreas,感谢您抽出时间帮助我完成我的项目。愿上帝保佑你:D
array(8) {
  ["TRANSACTION_ID"]=>
  string(6) "abc123"
  ["MERCHANT_ACC_NO"]=>
  string(7) "M213213"
  ["TXN_STATUS"]=>
  string(1) "A"
  ["TRAN_DATE"]=>
  string(10) "2020-07-20"
  ["CAPTURE_DATE"]=>
  string(10) "2020-07-20"
  ["SALES_DATE"]=>
  string(11) "2020-07-20 "
  ["RESPONSE_CODE"]=>
  string(1) "1"
  ["RESPONSE_MESSAGE"]=>
  string(7) "Success"
}