为<li> </li>添加额外课程

时间:2010-09-13 23:19:55

标签: php regex list

$string = '<ul>
   <li id="34334" class="some_class"><a href="/stack/">Text</a></li>
   <li id="someid" class="more_class"><a href="/overflow/">Text</a></li>
</ul>';

我需要什么(实际上不知道该怎么办,请帮忙):

  1. 我们必须检查每个<a>
  2. 中的<li>
  3. 如果href <a> == /stack/,则为父current
  4. 添加额外课程<li>

    就像,如果我们正在搜索/stack/,我们应该得到这个:

    $string = '<ul>
       <li id="34334" class="some_class current"><a href="/stack/">Text</a></li>
       <li id="someid" class="more_class"><a href="/overflow/">Text</a></li>
       <li id="34334" class="some_class current"><a href="/stack/">Text</a></li>
    </ul>';
    

2 个答案:

答案 0 :(得分:2)

$string = '<ul>
   <li class="some_class"><a href="/stack/">Text</a></li>
   <li class="more_class"><a href="/overflow/">Text</a></li>
</ul>';

$new_string = preg_replace('/(<li( +id="[^"]*")? +class=")([^"]*)(" *>)( *<a +href="\/stack\/">)/', '$1$3 current$4$5', $string);

注意:已更新

答案 1 :(得分:1)

使用jquery

$(document).ready(function(){
$('li > a[href*="stack"]').parent().addClass('newclass');});