Как я могу получить ссылки в HTML-список с помощью PHP? - PullRequest
1 голос
/ 09 февраля 2011

У меня есть следующий HTML-код в HTML:

<ul><li><a href="/webapps/portal/frameset.jsp?tab_tab_group_id=noActiveTabGroup&amp;url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_343744_1%26url%3D" target="_top">CCM.TC2012.1.1111.20132 : Proyecto de desarrollo de software ( 11 Gpo 1)</a></li>                                                                      <li><a href="/webapps/portal/frameset.jsp?tab_tab_group_id=noActiveTabGroup&amp;url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_343703_1%26url%3D" target="_top">CCM.TC3003.1.1111.20088 : Diseño y arquitectura de software ( 11 Gpo 1)</a></li>                                                                      <li><a href="/webapps/portal/frameset.jsp?tab_tab_group_id=noActiveTabGroup&amp;url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_343700_1%26url%3D" target="_top">CCM.TC3007.1.1111.20085 : Proyecto integrador de tecnologías computacionales ( 11 Gpo 1)</a></li>                                                                      <li><a href="/webapps/portal/frameset.jsp?tab_tab_group_id=noActiveTabGroup&amp;url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_374651_1%26url%3D" target="_top">CCM.WA3001.12.1111.20338 : Competencias profesionales ( 11 Gpo 12)</a></li></ul>

И я пытаюсь получить ссылки списков (значение href) со следующим кодом:

$dom = new domDocument;
@$dom->loadHTML($materias);
$dom->preserveWhiteSpace = false;
$ul = $dom->getElementsByTagName('ul');

$value = $dom->getElementsByTagName("ul")->item(0)->getAttributeNode("href");

$lis = $ul->item(0)->getElementsByTagName('li');

foreach ($lis as $li){
    echo li->nodeValue;
}

Но я получаю только текст, а не значение href.Не могли бы вы помочь мне, пожалуйста?

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Href является атрибутом элемента a.Вы выбираете UL и LI, поэтому нет атрибута href для извлечения.

Попробуйте с этим XPath :

/html/body/ul/li/a/@href

Это приведет к извлечению всех узлов атрибута href

0 голосов
/ 09 февраля 2011

$li->getAttribute( 'href' );?

Edit: Err - как я посмотрел в руководстве, это выглядит как $li->attributes->getNamedItem("href")->nodeValue;

...