使用Recurly API返回以下文本。我想弄清楚的是,用PHP从这个字符串中提取值并将其放入PHP变量中的最简单方法。
我在PHP手册中查看了各种查找文本的方法,但作为PHP的新手,在我找到值的位置后实际获取值的确切过程对我来说仍然不明显
例如,我如何提取plan_code
的值,并删除该值周围的引号,使结果为$plan = 'starter'
?
定期订阅[href=https://api.recurly.com/v2/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxx]account=<Recurly_Stub[帐户]href=https://api.recurly.com/v2/accounts/1>,activated_at="2012-07-14 12:55:47+00:00",货币="美元",current_period_ends_at="2012-08-14 12:55:47+00:00",current_period_started_at="2012-07-14 12:55:47+00:00",plan="定期计划[href=https://api.recurly.com/v2/plans/starter]name="Starter",plan_code="Starter",setup_fee_in_cents="<Recurly_CurrentList[]>",unit_amount_in_cents="<Recurly_CurrentList[]>">",quantity=2,state="active",subscription_add_ons=[],unit_amount_in_cents=1200,uuid="1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3"
您可以使用Recurly的PHP API:
$result = Recurly_js::fetch($_POST['recurly_token']);
$plan = $result->plan_code;
令牌是一个订阅对象。然后,您可以检索有关帐户的其他信息及其计费信息,如下所示:
$account = $result->account->get();
$billing = $account->billing_info->get();
以与上面提取plan_code相同的方式从账户中检索字段(例如,账户持有人的名字)及其账单信息(例如,记录的信用卡号的最后4位)。
执行上述操作比在Recurly的文档中找到如何执行要容易得多!
一个技巧是将其转换为querystring语法并使用parse_str(原始,数组)。
$original = 'Recurly_Subscription[href=https://api.recurly.com/v2/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxx] account=, activated_at="2012-07-14 12:55:47 +00:00", currency="USD", current_period_ends_at="2012-08-14 12:55:47 +00:00", current_period_started_at="2012-07-14 12:55:47 +00:00", plan="Recurly_Plan[href=https://api.recurly.com/v2/plans/starter] name="Starter", plan_code="starter", setup_fee_in_cents="", unit_amount_in_cents="">", quantity=2, state="active", subscription_add_ons=[], unit_amount_in_cents=1200, uuid="1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3"';
$newstring = str_replace(", ", "&", $original); // turns into querystring format &var=val
// you may need to use addslashes and/or replace the double quotes surrounding vars.
接下来使用parse_str,它构建了一个名称/值的关联数组:
parse_str($newstring, $myarray);
然后你可以打印出来,看看它的外观和调整:
print_r($myarray);
处理此问题的几种方法。
也许最简单的方法是:查看API,如果你能得到更符合标准的结果。PHP具有处理XML、JSON和其他几种格式的内置函数,因此您可以获得一个数组或对象,在该数组或对象上可以访问信息位。
使用这种格式的一种可能方法是:在,
处分割、在=
处再次分割以获得密钥=>值对。(不过,您可能需要剪切第一行,因为在那之后我看不到,
。)草图,未经测试:
<?php $result = your_api_call();
$chunks = explode(',', $result);
$resultAsArray = array();
foreach ($chunks as $biggerPart) {
$parts = explode('=', $biggerPart);
$tmpKey = trim($parts[0]);
$tmpValue = str_replace('"', '', $parts[1]);
$resultAsArray[$tmpKey] = $tmpValue;
}
echo $resultAsArray['plan_code'];