如何在此函数之外使用$ matches变量?

时间:2014-09-28 20:36:21

标签: php function curl

我试图让变量$ matches在这个函数之外可用。所以我可以使用echo $ matches [0] [0];或$ match [0] [1];函数在我的文档中使用后。到目前为止,我还没有能够在函数之外使用匹配变量。

    function curlLink($url, $regex)
{
        include ('lib/dBug.php');
        require_once('lib/curl_http_client.php');
        $curl = &new Curl_HTTP_Client();
        //$useragent = "Googlebot/2.1 (+http://www.google.com/bot.html)";  
        $useragent = "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0";
        $curl->set_user_agent($useragent);
        ini_set('max_execution_time','0');
        $x=0;
        $matches = array();
        while (sizeof($matches) == 0 && $x < 15) {
            $html_data = $curl->fetch_url($url);
            preg_match_all($regex, $html_data, $matches); 
            $x++;
            array_shift($matches);
        }
        if (empty($matches[0][0])) {
            echo '<img src=\"/img/bigbrokenlink.png\" /><br /><br />
            <b>Sorry, no results from your search!</b><br />';
        }
        if (!empty($matches[0][0])) {
            //return $matches; //This doesn't seem to return a usable variable...
            $dBug = new dBug ($matches);
        }
}

3 个答案:

答案 0 :(得分:1)

声明 $matches = array();在函数之外作为全局变量。或return it to some function并使用。

e.g:

global $matches;
function curlLink($url, $regex)
{
    global $matches;
// implementation 
}

//访问此处$matches;

答案 1 :(得分:1)

通过以下示例将变量设置为global

global $matches;
function curlLink($url, $regex)
{
    global $matches;

或在通话结束后返回,似乎你现在没有退回任何东西。

        if (!empty($matches[0][0])) {
            //return $matches; //This doesn't seem to return a usable variable...
            $dBug = new dBug ($matches);
        }
        return $matches;
}
$returned_matches = curlLink($url, $regex);

答案 2 :(得分:0)

你可以把它变成全球性的,但这可能不是想要的。你应该做的是:

  • 将第一行更改为function curlLink ($url, $regex, &$matchesOut)

  • 在功能结束时,使用$matchesOut = $matches

  • 您现在可以使用:

$matches = array(); curlLink(arg1, arg2, $matches); echo $matches[0];