В PHP Crawler отсутствуют хиты и пустые хиты

0

Я делаю сканер PHP, который сканирует URL-адрес для адресов электронной почты. Но почему-то ему не хватает адресов электронной почты, и он возвращает пустые места массивов.

код:

function curl($url){
        $ch = curl_init( );
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $return = curl_exec($ch);
        curl_close ($ch);
        return $return;
    }
    if(isset($_POST['go']))
    {
        if($_POST['url'] != ''){
        $data = curl($_POST['url']);
        preg_match("/[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})/i", $data, $matches);
        echo "<h1>Handmatig gezocht</h1><hr>";
        $tely = count($matches);
        for ($y=0; $y<=$tely; $y++) 
        {
            if(!empty($matches[$y]))
            {
                echo $matches[$y] ."<br>";
            }
            else
            {
                echo "Lege array :(<br>";
            }   
        }
        echo "<hr>";

        }
    }

Я сделал простую веб-страницу на своем локальном компьютере с 5 электронными письмами

    <p>[email protected]</p>
    <p>[email protected]</p>
    <p>[email protected]</p>
    <p>[email protected]</p>
    <p>[email protected]</p>

И массив, который я получаю от моего искателя, выглядит так:

Array ( [0] => [email protected] [1] => [2] => [3] => .nl )
Теги:
curl
web-scraping
web-crawler

1 ответ

2
Лучший ответ

Это происходит потому, что вы используете preg_match (см. Документацию).
Вместо этого вы должны использовать preg_match_all.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню