如何在li标签中提取链接和文本?

时间:2017-05-22 14:27:14

标签: php

我使用下面的代码来获取ul中的所有href标签,文本和文本 标签,但我不知道为什么我没有得到它显示为空的href链接 和锚标签内的文本和ul标签内的文本在一起 但我想在单独的变量中使用它,我不知道我哪里出错了。 任何帮助,将不胜感激。

<?php

    $str='<li><a href="test1.php">21.03.2017

    <ul>Test1</ul>
    </a><p>

    <a href="test1"></a>
    </p>

    </li>

    <li><a href="test2.php">21.03.2017

    <ul>Text2</ul>
    </a><p>

    <a href="test2.php"></a>
    </p>

    </li>';

    $dom = new DOMDocument;

    @$dom->loadHTML($str);


    $liList = $dom->getElementsByTagName('li');

    foreach ($liList as $li) {

              $output[] = array (
          'str' => $li->nodeValue,
          'href' => $li->getAttribute('href')
       );

    }
    var_dump($output);

?>

输出

array(2) { [0]=> array(2) { ["str"]=> string(22) "21.03.2017 Test1 " ["href"]=> string(0) "" } [1]=> array(2) { ["str"]=> string(22) "21.03.2017 Text2 " ["href"]=> string(0) "" } }

2 个答案:

答案 0 :(得分:0)

href是<a>代码的属性,而不是<li>,将代码更改为$dom->getElementsByTagName('a');,它将开始工作!

见这里:https://3v4l.org/4Ln5E

答案 1 :(得分:0)

有些事情如下:

$doc = new DOMDocument();
  $doc->loadHTML($str);
  $a= $doc->getElementsByTagName('a');

  foreach($a as $href) {
   echo $href->getAttribute('href')."<br />";

  }