2017-05-22 17 views
0

以下のコードを使用して、ul タグ内のすべてのhrefタグ、テキスト、テキストを取得しますが、hrefリンクが表示されない理由はわかりません。 とulタグ内のテキスト一緒に ですが、私は別の変数でこれをしたい、私は間違ってどこに行くのか分からない。 ご協力いただければ幸いです。liタグ内のリンクとテキストを抽出するには?

<?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) "" } } 

答えて

0

hrefが<a>タグの属性ではなく、<li>で、$dom->getElementsByTagName('a');にあなたのコードを変更し、それが作業を開始します!

こちらを参照してください:この線に沿ってhttps://3v4l.org/4Ln5E

+0

をしかし、それは私が唯一のli要素内のみのhrefタグをしたいすべてのhrefタグを返します。 –

0

何か:

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

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

    } 
+0

しかし、hrefタグだけを返します。これは、li要素内のhrefタグだけです。 –

関連する問題