Разбор HTML-элемента - PullRequest
       0

Разбор HTML-элемента

0 голосов
/ 12 апреля 2011

Я раньше использовал DOM для разбора сайтов на PHP.

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

Но ... (Я не хочу начинать гадость, просто ответ: P)

Если я хочу проанализировать только 1 элемент HTML, например,

<a href="http://example.com/something?id=1212132131133&filter=true" rel="blebeleble" target="_blank">

И найдите содержимое атрибута href, могу ли я (и, вероятно, мне нужно, если смогу) использовать DOM для разбора этой строки или мне нужна полная веб-страница, чтобы иметь возможность проанализировать ее с помощью DOM?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Да, вы можете сделать это.

Вы должны:

  • сделать вид, что тег <a /> составляет весь документ;
  • убедиться, что вызакройте тег;
  • убедитесь, что входная строка является допустимым XML (обратите внимание, что я заменил ваш & на &amp;, соответствующую HTML-сущность).

Код:

<?php
$str = '<a href="http://example.com/something?id=1212132131133&amp;filter=true" rel="blebeleble" target="_blank" />';

$dom = new DOMDocument();
$dom->loadXML($str);
var_dump($dom->childNodes->item(0)->attributes->getNamedItem('href')->value);

// Output: string(57) "http://example.com/something?id=1212132131133&filter=true"
?>

PS, если вы хотите включить текст ссылки, это тоже нормально:

$str = '<a href="http://example.com/something?id=1212132131133&amp;filter=true" rel="blebeleble" target="_blank">Click here!</a>';
// .. code .. //

// Output: string(57) "http://example.com/something?id=1212132131133&filter=true"
0 голосов
/ 12 апреля 2011

Вы можете легко адаптировать регулярное выражение для анализа только этого тега, если вы его изолировали.Примером может быть , найденный здесь .Это для Java, так что не забудьте изменить регистр без учета регистра до конца!

...