无法访问控制器中的变量(Laravel)

时间:2015-09-09 10:17:59

标签: php regex controller laravel-5 goutte

我使用Laravel 5与Goutte进行抓取,我试图提取我需要的链接,而不是所有链接。所以,基本的正则表达式出现了。正则表达式是可以的,在线测试并且它正在工作,但当我尝试在控制器中应用该正则表达式时,我收到了错误。这是我试过的:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Goutte\Client;

class RvnController extends Controller
{
    public function index()
    {


        $client = new Client();

        $crawler = $client->request('GET', 'http://www.jgpnis.rs/index.php/red-voznje-preuzimanje-pregled.html');

        $regex_rvn_links = "/http:\/\/www.jgpnis.rs\/red_voznje\/([a-zA-Z0-9\-])+\/([a-zA-Z0-9\-\.])+/";
        $links_array = array();

        $crawler->filter('a')->each(function ($node) use($links_array) {

            if (preg_match($regex_rvn_links , $node->link()->getUri())) {
                $links_array[] = $node->link()->getUri();
            }


        });

        dd($links_array);
    }
}

错误就像:ErrorException in RvnController.php line 27: Undefined variable: regex_rvn_links

好的,我尝试直接在preg_match中使用正则表达式传递该错误并且它正常工作,但我的$links_array为空。不要混淆,如果我打印$node->link()->getUri()而不是将其推送到数组,我会得到大约15个链接,因此它正在工作。但是,我不能像这样使用它,我需要那个数组。所以,我的问题是如何在这种情况下使用变量,因为它们不起作用。我错过了什么?

0 个答案:

没有答案