Php 正则表达式匹配span还是a?
我有这个功能:Php 正则表达式匹配span还是a?,php,regex,Php,Regex,我有这个功能: function getTextBetweenTags($string, $tagname) { $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/"; preg_match($pattern, $string, $matches); if(count($matches) > 0){ return $matches[1]; } } 函数getTextBetween
function getTextBetweenTags($string, $tagname) {
$pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
preg_match($pattern, $string, $matches);
if(count($matches) > 0){
return $matches[1];
}
}
函数getTextBetweenTags($string,$tagname){
$pattern=“/(.*)/”;
预匹配($pattern,$string,$matches);
如果(计数($matches)>0){
返回$matches[1];
}
}
例如,将
span
作为参数$tagname
传递允许我匹配任何span标记。我希望通过a | span
将允许我处理任何a
或span
标记。但它与任何东西都不匹配。为什么?尝试在括号中分组(正如我们在评论中所说的):
函数getTextBetweenTags($string,$tagname){
$pattern=“/(.*)/”;
预匹配($pattern,$string,$matches);
如果(计数($matches)>0){
返回$matches[1];
}
}
如果您通过
$string=“a | span”
,您将获得$pattern=“/”代码>建议:在预匹配之前使用可能的预匹配引用您的模式什么是失败的源示例?而不是if(count($matches)>0{
只要if
preg_match
。这不会将Henrik-Henrikson与模式模式a | span匹配?它与您编写的模式相同(?.
)。代码唯一的区别是括号[]
对允许的字符串集合进行分组,这些字符串由|
[]
是一个字符类,它允许单个字符,而不是组。这将允许s
,p
,a
,n
,
和a
。@Himmators更新您的问题以获得示例字符串。@Himmators您在问题上使用了正确的东西。[]
建议不仅匹配a、span,还匹配a、span、snap、pans等
function getTextBetweenTags($string, $tagname) {
$pattern = "/<($tagname)?.*>(.*)<\/($tagname)>/";
preg_match($pattern, $string, $matches);
if(count($matches) > 0){
return $matches[1];
}
}