file_get_content的正则表达式

时间:2013-08-27 08:31:25

标签: php

我正在使用兑换货币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}

如何使正则表达式仅获得美元汇率。

5 个答案:

答案 0 :(得分: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

参考文献:

答案 1 :(得分:1)

如果你真的想使用正则表达式,那么它就像是:

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

无论如何你的例子看起来像json,我宁愿建议用这种方式:

$data = json_decode($contents);
echo $data->rate;

答案 2 :(得分: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'];

答案 3 :(得分:1)

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

$decoded = json_decode($result);
echo $decoded->rate;

答案 4 :(得分:1)

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

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

多数民众赞成