0

我正在使用兑换货币 api 来获取当前的美元汇率。在使用 PHP 代码获取内容之后,但在括号中打印之后,

$url = "http://rate-exchange.appspot.com/currency?from=USD&to=PKR&q=1";

$result = file_get_contents($url);
echo $result;


// print as {"to": "PKR", "rate": 103.59473699999999, "from": "USD", "v": 103.59473699999999}

如何制作正则表达式以仅获得美元汇率。

4

5 回答 5

2

您在这里不需要正则表达式。您从 API 返回的答案看起来像是 JSON 格式。

您要做的是json_decode()对返回值执行一个函数:

$result = file_get_contents( $url );
$data = json_decode( $result, true )

现在您将在$data对象内部拥有一个关联数组。您将能够使用与关联数组相同的语法来访问它:

echo $data[ "to" ] // PKR
echo $data[ "rate" ] // 103.59473699999999
echo $data[ "from" ] // USD
echo $data[ "v" ] // 103.59473699999999

参考:

于 2013-08-27T08:36:07.817 回答
1

如果您真的想使用正则表达式,那么它将类似于:

/"rate"\s*\:\s*"([0-9\.]+)/

无论如何,您的示例看起来像 json,我宁愿建议以这种方式使用它:

$data = json_decode($contents);
echo $data->rate;
于 2013-08-27T08:37:05.980 回答
1

http://rate-exchange.appspot.com/currency?from=USD&to=PKR&q=1正在返回 JSON。下面应该可以帮助你:

$fc = file_get_contents("http://rate-exchange.appspot.com/currency?from=USD&to=PKR&q=1");
$json = json_decode($fc, true);
echo $json['rate'];
于 2013-08-27T08:37:26.110 回答
1

您从 API 获得的结果看起来像JSON,它不能/不应该用(vanilla)正则表达式解析;PHP已经有json_decode()

$decoded = json_decode($result);
echo $decoded->rate;
于 2013-08-27T08:37:26.957 回答
1

您应该在 file_get_contents 结果上使用 json_decode,使用 true 作为第二个参数,然后访问您的速率作为结果数组中的“速率”键。

$r = json_decode(file_get_contents($url), true);
echo $r["rate"];

而已

于 2013-08-27T08:37:51.840 回答