Как обрабатывать вывод файлов в массиве в php? - PullRequest
0 голосов
/ 17 октября 2019

Итак, я нашел решение проблемы, с которой столкнулся ((как определить протокол домена) Как найти домен - HTTP или HTTPS (с WWW или без него) с использованием PHP?

Ниже приведены две версии моего кода:

Первая не работает, как ожидалось, она только повторяет мои домены.

<?php
$url_list = file('urls.txt');
    foreach($url_list as $url)
    {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    curl_exec($ch);

    $real_url =  curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

    echo $real_url;
}

?>

Вторая версия моего кода дает мнеошибка, связанная с тем, как мне выдается мой оператор foreach ...

<?php


      $fn = fopen("urls.txt","r");

    while(! feof($fn))  {
    $url_list = fgets($fn);

    foreach($url_list as $url)
    {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    curl_exec($ch);

    $real_url =  curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

    echo $real_url;
    #echo $result;
    fclose($fn);
        }
    }

?>

Что я могу делать неправильно ??

Ожидаемые результаты таковы, но при чтении доменов из файла;

код: ссылка -> Как найти домен по HTTP или HTTPS (с WWW или без) с использованием PHP?

<?php


      $url_list = ['facebook.com','google.com'];

foreach($url_list as $url){

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    curl_exec($ch);

    $real_url =  curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
    echo $real_url;//add here your db commands

}

?>

Вывод:

test@linux: php domain-fuzzer.php
https://www.facebook.com/http://www.google.com/#

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Я нашел решение, просто если кто-нибудь найдет такую ​​проблему, вот код:


<?php   
    $fn = file_get_contents("urls.txt");
    $url_list = explode(PHP_EOL, $fn);

    foreach($url_list as $url)
    {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    curl_exec($ch);

    $real_url =  curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

    echo  nl2br("$real_url \n");
    }
?>   

0 голосов
/ 17 октября 2019

По умолчанию fgets возвращает одну текущую строку из файла, а не массив всех строк файла. Итак, ваш код будет:

<?php
   $fn = fopen("urls.txt","r");

while(! feof($fn))  {
$url = fgets($fn);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_exec($ch);

$real_url =  curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

echo $real_url;
#echo $result;
fclose($fn);
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...