2

这是我下面用于推特应用程序的代码。我试图纠正错误但无济于事

致命错误:在第 47 行调用 C:\wamp\www\tweet\twitter.php 中未定义的函数 curl()

我必须在我的代码中编辑什么?

<?php
require_once('TwitterAPIExchange.php');

$settings = array(
    'oauth_access_token' => "",
    'oauth_access_token_secret' => "",
    'consumer_key' => "",
    'consumer_secret' => ""
);

$url = "https://api.twitter.com/1.1/statuses/user_timeline.json";

$requestMethod = "GET";

if (isset($_GET['user']))  {$user = $_GET['user'];}  else {$user  = "iagdotme";}
if (isset($_GET['count'])) {$user = $_GET['count'];} else {$count = 20;}

$getfield = "?screen_name=$user&count=$count";
$twitter = new TwitterAPIExchange($settings);
$string = json_decode($twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest(),$assoc = TRUE);

if (is_array($string)) 
{
    foreach($string as $items)
    {
        echo "Time and Date of Tweet: ".$items['created_at']."<br />";
        echo "Tweet: ". $items['text']."<br />";
        echo "Tweeted by: ". $items['user']['name']."<br />";
        echo "Screen name: ". $items['user']['screen_name']."<br />";
        echo "Followers: ". $items['user']['followers_count']."<br />";
        echo "Friends: ". $items['user']['friends_count']."<br />";
        echo "Listed: ". $items['user']['listed_count']."<br /><hr />";
    }
}

$api = "http://api.twitter.com/1/users/show.xml?screen_name=";
$users = file("users.txt", FILE_IGNORE_NEW_LINES);

$i = 0;
if (is_array($users))
{
    foreach($users as $user)
    {
        $data = curl("$api$user");
        preg_match("#<description>(.*?)</description>#is", $data, $matches);
        $bio[$i]["user"] = $user;
        $bio[$i]["description"] = $matches[1];
        $i++;
    }

    function curl($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_close($ch);
        return curl_exec($ch);
    }

}
4

5 回答 5

3

您只能在定义函数后使用它们。在您的情况下,该curl()函数是在之后定义的,您调用它是因为您已将其放入 if-conditional 中,因此它成为了一个条件函数定义,它是被推迟的

更改您的代码以将其移出条件,以便无条件地定义它,例如在 require 行下方的文件顶部。

<?php
require_once('TwitterAPIExchange.php');

function curl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_close($ch);
    return curl_exec($ch);
}

由于现在总是在代码加载时定义(而不是包装到条件中),所以函数是在文件解析时定义的,而不是在执行时定义的。因此,您也可以将其放在文件的底部。但是请注意,您不能将其放入条件中。

于 2013-10-07T09:05:53.907 回答
3

curl()函数的声明移到if(){}包含它的块之外,就像这样。

if (is_array($users))
{
  foreach($users as $user)
  {
    $data = curl("$api$user");
    preg_match("#<description>(.*?)</description>#is", $data, $matches);
    $bio[$i]["user"] = $user;
    $bio[$i]["description"] = $matches[1];
    $i++;
  }
}

function curl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
于 2013-10-07T09:06:45.320 回答
0

curl 是一个需要安装的扩展。

http://www.php.net/manual/en/curl.setup.php

安装 curl 的分步指南

于 2013-10-07T09:02:21.550 回答
0

转到您的 xampp 安装文件夹(C:\www\xampp\php),然后在 php 文件夹中选择文件 php.ini(记事本文件)。

;扩展=php_curl.dll

您可以在文件中看到此扩展名。您应该删除该特定句子中的分号,然后重新启动 apache。我希望它会工作......

于 2013-10-07T09:07:06.387 回答
0
function curl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_close($ch);
    return curl_exec($ch);
}

if (is_array($users))
    {
        foreach($users as $user)
        {
            $data = curl("$api$user");
            preg_match("#<description>(.*?)</description>#is", $data, $matches);
            $bio[$i]["user"] = $user;
            $bio[$i]["description"] = $matches[1];
            $i++;
        }

    }
于 2013-10-07T11:53:41.083 回答