我试图让变量$ 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);
}
}
答案 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];