За последние 24 часа нас посетили 38648 программистов и 5555 роботов. Сейчас ищут 1639 программистов ...

PHPQuery выбор всех элементов от между тегами h2

Тема в разделе "PHP для новичков", создана пользователем blbulyandavbulyan, 9 июн 2018.

  1. blbulyandavbulyan

    blbulyandavbulyan Новичок

    С нами с:
    12 май 2017
    Сообщения:
    16
    Симпатии:
    0
    Имею некий HTML файл, его структура такова:
    HTML:
    1. <!DOCTYPE html>
    2. <meta charset="UTF-8">
    3. </head>
    4. <h2>Категория 1</h2>
    5. <p>
    6. Какой то-код
    7. </p>
    8. <hr>
    9. <h2>Заголовок 2</h2>
    10. <p>
    11. Какой-то код
    12. </p>
    13. <hr>
    14. <h2>Заголовок 3</h2>
    15. <p>
    16. Какой-то код
    17. </p>
    18. <hr>
    19. </body>
    20. </html>
    Нужно выбрать весь HTML код между тегами h2 , в конце тега h2 тоже нет, данные которые идут после последнего h2 тоже нужно выбрать, после выбора должна быть возможность дальше обрабатывать полученные данные с помощью PHPQuery. помогите пожалуйста кто сможет, заранее спасибо.:);) Также нужно выбрать и сам тег h2 к которому относятся данные, ну то есть если код
    HTML:
    1. <h2>Заголовок 1</h2>
    2. Какой-то код
    то выбрать нужно Заголовок 1 и какой-то код до следующего h2.
     
    #1 blbulyandavbulyan, 9 июн 2018
    Последнее редактирование: 9 июн 2018
  2. blbulyandavbulyan

    blbulyandavbulyan Новичок

    С нами с:
    12 май 2017
    Сообщения:
    16
    Симпатии:
    0
    Вот архив с двумя HTML файлами которые будет парсить будущий скрипт.
    Вот скрипт который у меня есть:
    PHP:
    1.  /*
    2. Copyright Blbulyan Software
    3. This software is distributed under the GNU GPL v2
    4. This software was developed by one Russian schoolboy.
    5. All proposals for its development are accepted, criticism is welcomed.
    6. */
    7.     require 'config/db.php';// тут хранятся настройки для подключения к СУБД, а именно объект PDO зовётся он $pdo
    8.     require 'lib/phpQuery-onefile.php';// это сама phpquery её я приложу ниже
    9.     /*ВНИМАНИЕ ДОБАВИТЬ ПРОВЕРКУ РАСШИРЕНИЙ ФАЙЛА!*/
    10.     /*После добавления убрать этот комментарий!*/
    11.     if(isset($_POST['submit'])){
    12.         $HTMLFileContent = file_get_contents($_FILES['HTMLfile']['tmp_name']);
    13.         $dom = phpQuery::newDocument($HTMLFileContent);
    14.         $category_name = $dom->find('h1')->text();
    15.         $category_name = str_replace(":", "", $category_name);
    16.         $PRE_category_id = $pdo->prepare("SELECT `CategoryID` FROM `categories` WHERE `CategoryName` = :category_name");
    17.         $PRE_category_id->execute(array('category_name' => $category_name));
    18.         $category_id = $PRE_category_id->fetch();
    19.         echo $category_id['CategoryID'];
    20. /*дальше должен идти код для получения элемента h2, и всего того что под ним, и до следующего h2
    21. но его я написать не смог, именно по этому обратился на форум
    22. */
    23.     }
    24. ?>
    25. <!DOCTPE html>
    26. <html>
    27. <!-- Copyright Blbulyan Software
    28. This software is distributed under the GNU GPL v2
    29. This software was developed by one Russian schoolboy.
    30. All proposals for its development are accepted, criticism is welcomed.-->
    31.     <head>
    32.         <meta charset="UTF-8">
    33.         <title>Добавления каналов</title>
    34.     </head>
    35.     <body>
    36.         <h2>Для добавления каналов загрузите HTML файл</h2>
    37.         <form method="POST" enctype="multipart/form-data">
    38.             <input type="file" name="HTMLfile" />
    39.             <input type="submit" name="submit" value="Загрузить" />
    40.         </form>
    41.     </body>
    42. </html>
    Вообще зачем всё это нужно? Это нужно для того чтобы автоматически добавить это всё (а именно каналы в соответствующие подкатегории, подподкатегории) в базу данных, с добавлением в бд я справлюсь сам, а вот с выбором тега h2 и всего что до следующего h2, уже не справлюсь.
     

    Вложения:

  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Обратись к владельцу сайта спроси за доступ к апи.
     
  4. blbulyandavbulyan

    blbulyandavbulyan Новичок

    С нами с:
    12 май 2017
    Сообщения:
    16
    Симпатии:
    0
    Это мой сайт у него нет апи.:)
     
  5. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    849
    Симпатии:
    199
    Адрес:
    Санкт-Петербург
    Так сделай, раз твой же сайт. Это гораздо удобнее и без всей этой наркомании
     
  6. blbulyandavbulyan

    blbulyandavbulyan Новичок

    С нами с:
    12 май 2017
    Сообщения:
    16
    Симпатии:
    0
    Не умею.
     
  7. username

    username Новичок

    С нами с:
    6 июл 2017
    Сообщения:
    223
    Симпатии:
    17
    PHP:
    1. $html = $HTMLFileContent;
    2. $ah = explode("<h2",$html);
    3. echo "<h2".$ah[1];
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.971
    Симпатии:
    753
    на стороне донора собираешь все данные в массив $result и делаешь:
    PHP:
    1. echo json_encode($result);
    запрашиваешь:
    PHP:
    1. $json = file_get_contents($url);
    2. //декодируешь
    3. $result = json_decode($json, true);
    и вуаля. У тебя есть массив $result. Это если сайты на разных хостах.
    А если на одном, то ты можешь просто из БД их запросить, прикинь :)