正则表达式匹配跨度还是?

时间:2016-02-11 15:55:46

标签: php regex

我有这个功能:

function getTextBetweenTags($string, $tagname) {
    $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
    preg_match($pattern, $string, $matches);
    if(count($matches) > 0){
        return $matches[1];
    }
}

传递span作为参数$tagname,可以匹配任何span标记。我希望传递a|span可以让我选择aspan个标签。但它并不匹配任何东西。为什么呢?

1 个答案:

答案 0 :(得分:0)

尝试在括号中进行分组(正如我们在评论中所说):

function getTextBetweenTags($string, $tagname) {
    $pattern = "/<($tagname)?.*>(.*)<\/($tagname)>/";
    preg_match($pattern, $string, $matches);
    if(count($matches) > 0){
        return $matches[1];
    }
}

如果您通过$string = "a|span",则会获得$pattern = "/<(a|span)>";