ID とクラスの両方を含む div の情報を取得するには、どのコードを使用しますか? たとえば、PHP Simple DOM Parser を使用してこの div を表示するにはどうすればよいでしょうか?
<div id="the-id" class="the-class">
div に id しかない場合に使用することはわかっています$html->find('div[id=the-id]', 0);
が、div をクラスと id で解析するにはどうすればよいですか?
cssのようなセレクターを拡張できますか?
私はテストしていませんが、次のいずれかがあなたが望む結果を生み出すはずだと思います。
$html->find('div.the-class[id=the-id]', 0);
$html->find('div.the-class#the-id', 0);
$html->find('div[id=the-id][class=the-class]', 0); // only if that's the only
$html->find('div[id=the-id][class~=the-class]', 0); // even if there's multiple classes
$html->find('#the-id .the-class', 0);
//or
$html->find('[id=the-id] [class=the-class]', 0);
要素をスペースで区切ります。
// Find all <li> in <ul>
$es = $html->find('ul li');
// Find Nested <div> tags
$es = $html->find('div div div');
// Find all <td> in <table> which class=hello
$es = $html->find('table.hello td');
// Find all td tags with attribite align=center in table tags
$es = $html->find(''table td[align=center]');
// Find all <li> in <ul>
foreach($html->find('ul') as $ul)
{
foreach($ul->find('li') as $li)
{
// do something...
}
}
// Find first <li> in first <ul>
$e = $html->find('ul', 0)->find('li', 0);
単純な dom パーサーのクエリ文字列は、css と同じように機能します。ID「the-id」の div を検索するには、 を使用します->find('div#the-id')
。おそらく、一意の ID を持っているので、必要なのはそれだけです。
本当に必要な場合は、 を使用できますが->find('div#the-id.the-class')
、通常はそれほど具体的である必要はありません。
これをPHPで実行してもよろしいですか?javascriptでこれを行うのはとても簡単です
var elements = document.getElementsByClassName("the-class");
for (var element in elements)
{
var id = element.getAttribute("id");
}
あるいは...
var elements = document.getElementsByTagName("div");
for (var element in elements)
{
var id = element.getAttribute("id");
var class_name = element.get.Attribute("class");
}