Мой скрипт, завернутый в функцию, не дает никакого результата

Я написал скрипт на php для разбора ссылки каждого состояния, расположенного под заголовком High School Directory by State таблицы из этот URL. Моя первая функция fetch_item_links() может правильно извлекать эти ссылки. Что я хочу сделать сейчас, так это указать эти URL-адреса в функции fetch_info(), чтобы она анализировала the red colored link из целевая страница.

Вторая функция также работает безупречно, когда я указываю любой отдельный URL-адрес для тестирования, как в Вот этот.

Однако, когда я пытаюсь запустить весь скрипт, я не получаю никакого вывода. Тоже нет ошибки.

Это моя попытка:

<?php
$url = 'http://www.directoryofschools.com/high-schools/US.html';
$prefix = 'http://www.directoryofschools.com';

function fetch_item_links($link,$base)
{
    $html_doc = new DOMDocument();
    @$html_doc->loadHtmlFile($link);    
    $content_xpath = new DOMXPath($html_doc);
    $item_row = $content_xpath->query('//*[@class = "online_college_list"]//tr//td//a[@title]');
    $packtBook = array();
    for ($i=0; $i <$item_row->length; $i++){
        $title = $item_row->item($i)->getAttribute('href') . "<br/>";
        $string = $base . str_replace("..", "", $title);
        $packtBook[] = $string;
    }
    return $packtBook;
}

function fetch_info($link)
{
    $html_doc = new DOMDocument();
    @$html_doc->loadHtmlFile($link);    
    $content_xpath = new DOMXPath($html_doc);
    $item_row = $content_xpath->query('//*[@class = "online_college_list"]//tr//td//a[@title]');
    for ($i=0; $i <$item_row->length; $i++){
        $title = $item_row->item($i)->getAttribute('href') . "<br/>";
        echo $title;
    }
}
$items = fetch_item_links($url,$prefix);
foreach($items as $file){
    fetch_info($file);
}
?>

Как я могу заставить свой скрипт работать?

Вероятно, у вас есть какие-то ошибки с функцией loadHtmlFile(), но вы их не видите, потому что используете оператор контроля ошибок @. Попробуйте удалить его и посмотреть, какие ошибки отображаются.

Ugo T. 29.05.2019 18:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы добавляете <br/> к URL-адресу в fetch_item_links, что означает, что вы не сможете загрузить его через loadHtmlFile(). Измените строку на

$title = $item_row->item($i)->getAttribute('href');

На самом деле, в обоих случаях было бы лучше удалить <br/> и добавлять его к строке только тогда, когда вы повторяете его.

Правильно, ты @aynber. Ваше предложение, похоже, уже решило проблему.

robots.txt 29.05.2019 18:57

Небольшой вопрос: когда я удаляю это @ из @$html_doc, как предложил @Ugo T., я получаю нужные ссылки вместе с ошибками, как в Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: tr and tbody in http://www.directoryofschools.com/high-schools/US.html, line: 54 in C:\xampp\htdocs\PHP\test.php on line 8. Как я могу избавиться от такой ошибки. Заранее спасибо @aynber.

robots.txt 30.05.2019 18:36

Это хороший вопрос. Похоже, что HTML на другой стороне неправильно сформирован, так что это немного сложно. Попробуйте эту ссылку: stackoverflow.com/questions/1148928/… и используйте libxml_use_internal_errors(true);

aynber 30.05.2019 18:41

Хотел бы я проголосовать за ваше решение несколько раз. Да, это тоже решило проблему.

robots.txt 30.05.2019 19:01

Другие вопросы по теме