代码之家  ›  专栏  ›  技术社区  ›  Anoop Mayampilly Muraleedharan

正则表达式,用于获取具有或不具有id属性的标记之间的字符串

  •  1
  • Anoop Mayampilly Muraleedharan  · 技术社区  · 7 年前

    我有一根像下面这样的绳子。 我想写一个preg\u match\u all()函数来获取' ' . 为了得到所需的结果,必须对下面的表达式进行哪些更改?

    $featureTab = "<li>one</li><li id='someId'>two</li>";
    

    preg_match_all('/(?<=\<li\>)(.*?)(?=\<\/li\>)/', $featureTab ,$matches);
    

    但它只是回来了' 标签不带

    2 回复  |  直到 6 年前
        1
  •  2
  •   devmyb    7 年前

    <li.*?>(.*?)<\/li>
    

    在这里

    `<li.*?>` here `(.*)` is to capture all attributes of `li` and `?` is to if no attributes is defined or not even space count also
    

    因为两者都有不同的 li

    Demo

    注:用于 HTML/XML DOMDocument 对于相同的

        2
  •  1
  •   Duc Filan    7 年前

    您可以使用此正则表达式:

    <li[^>]*>(.*?)<\/li>
    

    $re = '/<li[^>]*>(.*?)<\/li>/';
    $str = '<li>one</li><li id=\'someId\'>two</li>';
    
    preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
    
    // Print the entire match result
    var_dump($matches);
    

    请在此处查看结果: https://3v4l.org/arFRq