DOM Manipulation с PHP - PullRequest
       11

DOM Manipulation с PHP

1 голос
/ 09 мая 2009

Я хотел бы сделать простое, но нетривиальное манипулирование DOM Elements с помощью PHP, но я потерян.

Предположим, что страница похожа на Википедию, где у вас есть параграфы и заголовки (<p>, <h2>). Они братья и сестры. Я хотел бы взять оба элемента в последовательном порядке.

Я пытался GetElementbyName, но тогда у вас нет возможности упорядочить информацию. Я пробовал DOMXPath->query(), но мне это показалось странным.

Просто анализирует что-то вроде:

<html>
  <head></head>
  <body>
    <h2>Title1</h2>
    <p>Paragraph1</p>
    <p>Paragraph2</p>
    <h2>Title2</h2>
    <p>Paragraph3</p>
  </body>
</html>

в

Title1
Paragraph1
Paragraph2
Title2
Paragraph3

С несколькими битами HTML-кода мне не нужно между всеми.

Спасибо. Надеюсь, вопрос не похож на домашнюю работу.

Ответы [ 3 ]

1 голос
/ 09 мая 2009

Я несколько раз использовал простой HTML-код от S.C.Chen.

Идеальный класс для доступа к элементам.

Пример:

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');

// Find all images
foreach($html->find('img') as $element)
       echo $element->src . '<br>';

// Find all links
foreach($html->find('a') as $element)
       echo $element->href . '<br>'; 

Проверьте это здесь. simplehtmldom

Может помочь с будущими проектами

1 голос
/ 09 мая 2009

Попробуйте взглянуть на эту библиотеку и соответствующий проект:

Простой HTML DOM

Это позволяет открывать онлайн-страницу или HTML-страницу из файловой системы и получать доступ к ее элементам через имена классов, имена тегов и идентификаторы. Если вы знакомы с jQuery и его синтаксисом, вам не нужно время, чтобы привыкнуть к этой библиотеке.

1 голос
/ 09 мая 2009

Я думаю DOMXPath->query() - правильный подход. Это выражение XPath вернет все узлы, которые являются <h2> или <p> на одном уровне (так как вы сказали, что они являются родными братьями).

/html/body/*[name() = 'p' or name() = 'h2']

Узлы будут возвращены как список узлов в правильном порядке (порядок документов). Затем вы можете построить цикл foreach для результата.

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