2014-09-28 3 views
0

Я пытаюсь получить переменные $ matches для использования вне этой функции. Поэтому я могу использовать сопоставления echo $ [0] [0]; или $ matches [0] [1]; после того, как функция будет использоваться в моем документе. До сих пор мне не удалось использовать переменную match вне функции вообще.

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

вернуть его из функции и использовать его? – tfrascaroli

+0

define «похоже, не возвращает полезную переменную» – raina77ow

+0

Что вы подразумеваете под «это, похоже, не возвращает полезную переменную ...» – Steve

ответ

1

объявить $matches = array(); вне функции, как глобальный variable.or return it to some function и использование.

например:

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

// доступ здесь $matches;

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); 
0

Вы можете сделать его глобальным, но это, вероятно, не нужно. То, что вы должны сделать, это:

  • изменение первой линии function curlLink ($url, $regex, &$matchesOut)

  • в конце функции, используйте $matchesOut = $matches

  • теперь вы можете использовать:

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

+0

Я бы хотел попробовать это решение, но я не могу показаться чтобы это работало. Я также не мог найти документацию по использованию & $ var в функции. –

+0

Даже если вы не можете заставить его работать, НЕ используйте глобальные вары. http://stackoverflow.com/questions/1557787/are-global-variables-in-php-considered-bad-practice-if-so-why –

+0

Здесь представлены документы; http://php.net/manual/en/functions.arguments.php#functions.arguments.by-reference –