Проанализировать гетерогенный список html на php с помощью simple_html_dom

Я хочу проанализировать html-список, состоящий из тега article, и я обнаружил simple_html_dom Я прочитал документ, но не могу его исправить
У меня есть страницы типа

 <article class = "post">      
        <div class = "leftc">  <figure class = "ico-2721"></figure>
            <header>
                <h2>
                    <a href = "http://pop-music.ir/%d8%a2%d9%87%d9%86%da%af-%d8%ac%d8%af%db%8c%d8%af-%d9%85%db%8c%d9%84%d8%a7%d8%af-%d8%a8%d8%a7%d8%a8%d8%a7%db%8c%db%8c-%d8%a8%d9%86%d8%a7%d9%85-%db%8c%d8%a7%d8%aa%d9%88-%db%8c%d8%a7%d8%aa%d9%88"
                        rel = "bookmark" title = "دانلود آهنگ جدید میلاد بابایی بنام یاتو یاتو">دانلود آهنگ جدید میلاد بابایی بنام یاتو یاتو</a>
                </h2>
                <span class = "cat">دسته بندی :
                    <a href = "http://pop-music.ir/category/single-music/happy-song" rel = "category tag">آهنگ شاد</a>,
                    <a href = "http://pop-music.ir/category/single-music" rel = "category tag">تک آهنگ</a>
                </span>
                <span class = "date">تاریخ : ۲۱ام اسفند, ۱۳۹۶ </span>
            </header>
            <p style = "text-align: center;">
                <img class = "alignnone" title = "دانلود آهنگ جدید میلاد بابایی بنام یاتو یاتو" src = "http://dl.pop-music.ir/images/1396/Esfand/Milad-Babaei.jpg"
                    alt = "دانلود آهنگ جدید میلاد بابایی بنام یاتو یاتو" width = "500" height = "500">
            </p>
            <p style = "text-align: center;">
                <a title = "دانلود آهنگ جدید" href = "http://pop-music.ir/" target = "_blank" rel = "noopener noreferrer">دانلود آهنگ جدید</a>
                <strong>میلاد بابایی</strong> بنام
                <strong>یاتو یاتو</strong> با بالاترین کیفیت</p>
            <p style = "text-align: center;">
                <a href = "http://pop-music.ir/" target = "_blank" rel = "noopener noreferrer">Download New Music</a>
                <a href = "http://pop-music.ir/tag/download-new-music-milad-babaei">Milad Babaei</a> – Yato Yato</p>
            <p style = "text-align: center;">
                <span style = "color: #0000ff;">ترانه: عاطفه حبیبی , موزیک: میلاد بابایی , تنظیم: امیر ارشیا</span>
            </p>
            <div style = "text-align: center;">
                <div>
                    <p>برای
                        <a title = "دانلود آهنگ" href = "http://pop-music.ir/tag/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A2%D9%87%D9%86%DA%AF"
                            target = "_blank" rel = "noopener noreferrer">دانلود آهنگ</a> به ادامه مطلب مراجعه کنید …</p>
                </div>
            </div>
            <p style = "text-align: center;">
            </p>
            <div class = "morelink">
                <a href = "http://pop-music.ir/%d8%a2%d9%87%d9%86%da%af-%d8%ac%d8%af%db%8c%d8%af-%d9%85%db%8c%d9%84%d8%a7%d8%af-%d8%a8%d8%a7%d8%a8%d8%a7%db%8c%db%8c-%d8%a8%d9%86%d8%a7%d9%85-%db%8c%d8%a7%d8%aa%d9%88-%db%8c%d8%a7%d8%aa%d9%88">دانلود + ادامه مطلب</a>
                <div class = "rating"></div>
            </div>
            <div class = "pull-left"></div>
            <div class = "clear"></div>
        </div>

        <div class = "clear"></div>

    </article>

я пишу такой код, даже если знаю, что это нехорошо, но у меня нет другого варианта

$html = new simple_html_dom();
$link=array();
foreach ($html->find('article img') as $i => $element) {
    $links[$i]['src'] = $element->src;
}
$element = $html->find('article span[class=cat] a');
for ($i = 0; $i <= sizeof($element) / 2 - 1; $i++) {
    $links[$i]['cat'][2 * $i + 1] = $element[2 * $i + 1]->href;
    $links[$i]['cat'][2 * $i] = $element[2 * $i]->href;
}

предметы кошки не исправляются, если у некоторых есть один, у некоторых есть два или более а у некоторых они есть, таких полей много
Я хочу сделать что-то подобное для производительности и упрощения синтаксического анализа, но не знаю, как

$arti=$html->find('article') 
  foreach ($arti as $i => $element) {
        $links[$i]['src'] = $element->img->src;
        foreach ($arti->find('cat') as $j => $element) {
           $links[$i]['cat'][$j] = $element->href;
          }
    }

так что вы пытаетесь сохранить? источник изображения и ресурсы href?

Napoli 13.03.2018 07:07

много данных, включая источник изображения и ресурсы href

nima moradi 13.03.2018 10:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
2
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

есть обходной путь, но не идеальный ответ, мое решение - получить внешний текст или html каждой статьи и создать другой экземпляр с помощью simple_htm_dom

$html2 = str_get_html($html->find('article')->outertext);

а затем отправьте html2 другой функции для его анализа .
это не идеальный ответ, так что жду лучших ответов

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