0

我有这个功能:

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);问题出在哪里?

4

1 回答 1

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 的语法。

于 2013-02-24T21:52:32.603 回答