如果包含特定单词,搜索特定的html标签

时间:2018-04-04 03:26:11

标签: php regex

我使用以下正则表达式代码

  

/<a href="(.*)".*>(?:Refund|Refound|Refunds|return|returns)<\/a>/Ui

如果这些标签之间有退款或退货,

匹配,但它不匹配任何东西

我在

中搜索的html数据
 <li class="site-footer__linklist-item">
                 <a href="/pages/shipping-return-policy">Shipping Return Policy</a>
               </li>

我使用https://regexr.com/来测试代码

如何检查它是否包含其中一个单词(?:退款|重新退款|退款|退货|退货)

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用DOMDocument课程获取nodeValue a代码后跟preg_match

$str = '<li class="site-footer__linklist-item"><a href="/pages/shipping-return-policy">Shipping Return Policy</a></li>';

$dom = new DOMDocument();
$dom->loadHTML($str);
foreach($dom->getElementsByTagName("a") as $a){
    $val = $a->nodeValue;
    if(preg_match("/Refund(s)?|Refound|return(s)?/i", $val)) {
        echo $val;
    }
}

但是,如果您仍然希望以正则方式执行此操作,请执行以下操作:

<a.*?href="(.*?)".*?>.*?(Refunds?|Refound|returns?).*?<\/a>