Проблемы с записью результатов в CSV-файл - PullRequest
0 голосов
/ 17 сентября 2018

Я написал скрипт на php для извлечения ссылок и записи их в CSV-файл с главной страницы википедии. Скрипт получает ссылки соответственно. Тем не менее, я не могу записать заполненные результаты в CSV-файл. Когда я выполняю свой сценарий, он ничего не делает, без ошибок. Любая помощь будет высоко оценена.

Моя попытка до сих пор:

<?php
include "simple_html_dom.php";
$url = "https://en.wikipedia.org/wiki/Main_Page";
function fetch_content($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    $htmlContent = curl_exec($ch);
    curl_close($ch);
    $dom = new simple_html_dom();
    $dom->load($htmlContent);
    $links = array();
    foreach ($dom->find('a') as $link) {
        $links[]= $link->href . '<br>';
    }
    return implode("\n", $links);

    $file = fopen("itemfile.csv","w");
    foreach ($links as $item) {
        fputcsv($file,$item);
    }
    fclose($file);
}
fetch_content($url);
?>

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

1.Вы используете return в своей функции, поэтому в файл ничего не записывается, поскольку после этого код перестает выполняться.

2. Упростите свою логику с помощью приведенного ниже кода: -

$file = fopen("itemfile.csv","w");
foreach ($dom->find('a') as $link) {
  fputcsv($file,array($link->href));
}
fclose($file);

Таким образом, полный код должен быть: -

<?php

   //comment these two lines when script started working properly
    error_reporting(E_ALL);
    ini_set('display_errors',1); // 2 lines are for Checking and displaying all errors
    include "simple_html_dom.php";
    $url = "https://en.wikipedia.org/wiki/Main_Page";
    function fetch_content($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
        $htmlContent = curl_exec($ch);
        curl_close($ch);
        $dom = new simple_html_dom();
        $dom->load($htmlContent);
        $links = array();
        $file = fopen("itemfile.csv","w");
        foreach ($dom->find('a') as $link) {
            fputcsv($file,array($link->href));
        }
        fclose($file);
    }
    fetch_content($url);
?>
0 голосов
/ 17 сентября 2018

Причина, по которой файл не записывается, заключается в том, что вы return вышли из функции еще до того, как этот код может быть выполнен.

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