Анализ DOM для меня звучит как излишнее, если я понимаю проблему, с которой вы столкнулись. Предполагая, что вы точно знаете, что все содержимое переменной $list
будет структурировано как <li><a href='foo' title='bar'>bar</a></li>
, вы можете довольно легко выполнить то, что вы просите, комбинируя регулярные выражения с циклом:
$list = "<li><a href='http://site.com/2010/' title='2010'>2010</a></li>
<li><a href='http://site.com/2009/' title='2009'>2009</a></li>
<li><a href='http://site.com/2008/' title='2008'>2008</a></li>";
preg_match_all("/title='([^']*)'/s",$list,$matches); //this gets all titles
$output=$list;
foreach($matches[1] as $match) { //this applies the titles to the li elements
$location = strpos($output,"<li>");
$output = substr($output,0,$location)."<li class='".$match."'>".substr($output,$location+4);
}
Если вы выводите $ $:
<li class="y2010"><a href='http://site.com/2010/' title='2010'>2010</a></li>
<li class="y2009"><a href='http://site.com/2009/' title='2009'>2009</a></li>
<li class="y2008"><a href='http://site.com/2008/' title='2008'>2008</a></li>