无法在PHP中获取内容

时间:2013-02-24 20:50:48

标签: php

我有这个功能:

function get_vk($url) {
    $str = file_get_contents("http://vk.com/share.php?act=count&index=1&url=" . $url);
    if (!$str) return 0;
    return preg_match('/^VK.Share.count\((\d+),\s+(\d+)\);$/i', $rq, $i) ? (int) $i[2] : 0;
}

但是这个函数总是返回0,因为$str是NULL。但是,如果我们只是把这个链接

https://vk.com/share.php?act=count&index=1&url=http://stackoverflow.com

进入浏览器会返回VK.Share.count(1, 43);问题出在哪里?

1 个答案:

答案 0 :(得分:1)

您没有将输入字符串传递给preg_match。

代码应该这样写:

function get_vk($url) {
    $str = file_get_contents("http://vk.com/share.php?act=count&index=1&url=" . $url);
    if (!$str) return 0;
    preg_match('/^VK.Share.count\((\d+),\s+(\d+)\);$/i', $str, $matches);
    $rq = $matches[1];

    return $rq;
}

echo get_vk('http://stackoverflow.com');

您可以在http://php.net/preg_match了解preg_match的语法。