I would like to say, that I know, that many think, that Simple HTML DOM parser is a really bad choice for HTML parser. Still I need to use it at the moment.
I read some articles where it was described how to search by two or more attributes per one element. They proposed something like that and one possibility with array filtering
foreach ( tag[attr1=value] as tag1 )
{
foreach ( tag[attr2=value] as tag2 )
{
// print tag2[attr1=value,attr2=value]
}
}
My question is about native posibility for finding part by two attributes. I didn't find it in the manual, but not everything is always in the manual.
Does anyone know is there such way or similar tag2[attr1=value,attr2=value]
or tag2[attr1=value attr2=value]
or etc.?
As far as I can tell having looked through the simple_html_dom, there is no way other than a nested foreach loop to achieve the functionality you are looking for. There is no inbuilt support for
tag[attr=val][attr2=val]
Additionally each selector acts simply to add to the returned nodes, never to take away from it so something like
tag.class[attr=val] or tag#id[attr=val]
which I tried as a work around which would have mimicked some similar functionality.As well, I tried
$html->find("div[attr=val]")->find("div[attr2=val2]")
but this also failed as Simple HTML DOM returns an array of nodes rather than a new tree object making chaining impossible.The best way to go is the way you've posted in your question.
probably after 8 years they have came up with an updated version.
To use simple HTML dom parser with more than 1 attribute,
Hope it helps.
Never used Simple HTML DOM parser before. But its homepage says it works in jQuery way, so try
tag[attr1=value][attr2=value]
(jQuery: Multiple Attribute Selector)As I see there is no way to do that at the moment. It should be edited by author of this script or by some other developer/s willing to continue the development of this project. Don't know does the license allow it or not.