PHP Simple HTML DOM Parser:选择两个类

时间:2014-01-31 06:06:00

标签: php simple-html-dom

我的问题非常简单。 假设我有多个'a':

    <td class="autoindex_td">

        <a class="autoindex_a snap_shots" href="http://example.com.html">
            <img height="16" width="16" src="http://exmple.com/download/index_icons/winxp/sound.png" alt="[mp3]"></img>
            <strong>

                05 - example.mp3

            </strong>
        </a>
   </td>

我只想找到有两个班级的'强'。在这里我尝试了:

foreach ($html->find('a[class=autoindex_a , class=snap_shots]') as $link) {
    if(isset($link)){
   foreach($link->find('strong') as $tag)
       {
             $name = $tag->plaintext ;
             $hiren[] = $name ;
       }
     }
   }

但是我得到了null。那我如何同时选择两个班级呢?

4 个答案:

答案 0 :(得分:9)

刚刚找到了一条路:

 foreach ($html->find('a[class=autoindex_a snap_shots]') as $link) {
    if(isset($link)){
   foreach($link->find('strong') as $tag)
       {
             $name = $tag->plaintext ;
             $hiren[] = $name ;
       }
     }
   }

答案 1 :(得分:1)

为什么不DOMDocument上课?

<?php

$html=' <td class="autoindex_td">

        <a class="autoindex_a snap_shots" href="http://example.com.html">
            <img height="16" width="16" src="http://exmple.com/download/index_icons/winxp/sound.png" alt="[mp3]"></img>
            <strong>

                05 - example.mp3

            </strong>
        </a>
   </td>';

$dom = new DOMDocument;
@$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $tag) {
    if ($tag->getAttribute('class') === 'autoindex_a snap_shots') {
        foreach($tag->getElementsByTagName('strong') as $strongTag)
        {
        echo $strongTag->nodeValue; //"prints"  05 - example.mp3
        }
    }
}

答案 2 :(得分:1)

您需要将属性查找器分隔为:

$html->find("a[class='autoindex_a'][class='snap_shots']")

或者,使用点.分隔符分隔类:

$html->find('a.autoindex_a.snap_shots')

答案 3 :(得分:0)

这是一次选择符合所有这些条件的元素的方法。它返回适合所有条件的元素数组或零元素数组。 它接受元素数组或单个元素。 该标准需要用逗号分隔,它将返回适合所有这些标准的元素。 用法示例

public class MainFragment extends Fragment{

  public static MainFragment newInstance(Bundle args){
      MainFragment fragment = new MainFragment();
      fragment.setArguments(args);
      return fragment;
  }

 //... Class overrides here onCreateView etc..

// define insertSlider method 
public void insertSlider(ImageSlider slider){

imageSliderViewModel.insert(slider);
Toast.makeText(getActivity(), "Done Insert"+slider, Toast.LENGTH_SHORT).show();
  }