Проанализируйте HTML с HTML PHP DOMDocument

Я пытался сделать это с "getElementsByTagName", но это не работало, я плохо знаком с использованием DOMDocument для парсинга HTML, когда я раньше использовал regex до вчерашнего дня, некоторый вид fokes здесь сказал мне, что DOMEDocument будет лучше для задания, таким образом, я дам ему попытку :)

Я гуглю вокруг некоторое время поиска некоторых, объясняет, но не нашел ничего, что помогло (не с классом так или иначе)

Таким образом, я хочу получить, "Получают этот текст 1", и "Получают этот текст 2" и так далее.

Не смотрит трудно, но я не могу понять это :(

<div class="main">
    <div class="text">
    Capture this text 1
    </div>
</div>

<div class="main">
    <div class="text">
    Capture this text 2
    </div>
</div>
22
задан Mint 3 April 2010 в 12:23
поделиться

1 ответ

Если вы хотите получить:

  • Текст
  • внутри тега
    с class = "text"
  • , который сам находится внутри ]
    с class = "main"

Я бы сказал, что самый простой способ - не использовать DOMDocument :: getElementsByTagName - который вернет все теги с определенным name (пока вам нужны только некоторые из них) .

Вместо этого я бы использовал запрос XPath к вашему документу, используя класс DOMXpath .


Например, нужно сделать что-то подобное, чтобы загрузить строку HTML в объект DOM и создать экземпляр класса DOMXpath :

$html = <<<HTML
<div class="main">
    <div class="text">
    Capture this text 1
    </div>
</div>

<div class="main">
    <div class="text">
    Capture this text 2
    </div>
</div>
HTML;

$dom = new DOMDocument();
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);


И затем вы можете использовать запросы XPath с Метод DOMXPath :: query , который возвращает список элементов, которые вы искали:

$tags = $xpath->query('//div[@class="main"]/div[@class="text"]');
foreach ($tags as $tag) {
    var_dump(trim($tag->nodeValue));
}


И выполнение этого дает мне следующий результат:

string 'Capture this text 1' (length=19)
string 'Capture this text 2' (length=19)
52
ответ дан 29 November 2019 в 04:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: