我有这个功能:
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);
问题出在哪里?
答案 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的语法。