2009-05-09 3 views
1

Я хотел бы сделать простую, но нетривиальную манипуляцию с элементами DOM с помощью PHP, но я потерян.DOM Manipulation с 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 кода не нужно между всеми.

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

ответ

1

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

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

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

+0

Именно то, что я хотел. Я должен был включить несколько div, но он отлично работал. спасибо. – Sortea2

+0

Рад помочь. – Tomalak

1

У меня есть несколько раз простой html dom by S.C.Chen.

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

Пример:

// 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

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

Simple HTML DOM

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

Смежные вопросы