【问题标题】:convert response curl function from string to an object or array PHP将响应 curl 函数从字符串转换为对象或数组 PHP
【发布时间】:2020-11-17 20:33:17
【问题描述】:

我有这个功能:

function sendXmlOverPost($url, $get_account_balance) {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $get_account_balance);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // ask for results to be returned

    $result = curl_exec($ch);

    curl_close($ch);
    print($result);
    return $result;
}

sendXmlOverPost($url, $get_account_balance);

我得到了这个答案:

300137EUR2.00成功

我想获得一个数组或一个对象,使其只能访问 2.00。

我该怎么办?谢谢

【问题讨论】:

  • $url 可以给出哪些可能的响应类型?
  • 没有参数可以传递到端点,要求以 XML 或 JSON 或比文本块更有用和可靠的方式发送响应
  • 要可靠地解析这样的字符串,您需要知道所有可能的响应,以便可靠地分离特定部分

标签: php arrays string api curl


【解决方案1】:

如果您的字符串格式如上所示,您可以使用preg_match() 和提供的正则表达式来获取2.00

$result = '300137EUR2.00SUCCESS'; // $result = sendXmlOverPost($url, $get_account_balance);
$pattern = '/(?<=EUR)\d\.(\d*)/'; 
preg_match($pattern, $result, $matches);
echo $matches[0];

REGEX

  • Positive Lookbehind(?&lt;=EUR)(开始关注字符串'EUR')
  • EUR 与字符 EUR 字面匹配(区分大小写)
  • \d 匹配一个数字(等于 [0-9])
  • \. 匹配字符 。字面意思
  • 第一捕获组(\d*)
  • \d* 匹配一个数字(等于 [0-9])
  • * Quantifier — 匹配零次到无限次,尽可能多次,按需回馈(贪婪)

EXAMPLE

如果您希望在句点之前可能有多个数字,请将正则表达式更改为:

(?<=EUR)(\d*)\.(\d*)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多