My problem is very simple .
Let's say I have multiple '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>
I just want to find 'strong' which has two classes . Here what I tried :
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 ;
}
}
}
But I get null
.So how do I select two class at the same time ?
Just found a way :
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 ;
}
}
}
Why not DOMDocument
Class ?
<?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
}
}
}
You need to separate the attribute finders as:
$html->find("a[class='autoindex_a'][class='snap_shots']")
or, separate the classes with a dot .
separator:
$html->find('a.autoindex_a.snap_shots')