0

使用 Recurly API,将返回以下文本。我想弄清楚的是用 PHP 从这个字符串中提取值并将它们放入 PHP 变量中的最简单方法。

我已经查看了 PHP 手册中的各种方法来查找文本,但是对于 PHP 来说是新手,在我发现它们的位置对我来说仍然不明显之后实际获取值的确切过程。

例如,我将如何提取值plan_code并删除值周围的引号以使结果为$plan = 'starter'

Recurly_Subscription[href=https://api.recurly.com/v2/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] account=<Recurly_Stub[account] 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="Recurly_Plan[href=https://api.recurly.com/v2/plans/starter] name="Starter", plan_code="starter", setup_fee_in_cents="<Recurly_CurrencyList [ ]>", unit_amount_in_cents="<Recurly_CurrencyList []>">", quantity=2, state="active", subscription_add_ons=[], unit_amount_in_cents=1200, uuid="1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3"

4

3 回答 3

3

你可以使用 Recurly 的 PHP API:

$result = Recurly_js::fetch($_POST['recurly_token']);
$plan = $result->plan_code;

令牌是一个订阅对象。然后,您可以检索有关该帐户及其帐单信息的其他信息,如下所示:

$account = $result->account->get();
$billing = $account->billing_info->get();

从帐户中检索字段(例如帐户持有人的名字)及其帐单信息(例如信用卡记录的最后 4 位数字),与上面获取 plan_code 的方式相同。

执行上述操作比在 Recurly 的文档中查找方法要容易得多!

于 2012-12-14T18:53:48.723 回答
2

一个技巧是将其转换为查询字符串语法并使用 parse_str(original, array)。

$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);
于 2012-07-17T15:37:30.537 回答
2

几种方法来处理这个。

可能是最简单的一个:查看 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'];
于 2012-07-17T15:50:04.177 回答