我试图在 html 页面中获取 H1 文本,我使用了一个正则表达式,它工作得很好,直到我们开始在某些页面上使用微格式,以便简单起见,我使用了页面的标题(h1 标签作为“正在审核的项目”) .
问题是我之前使用的正则表达式停止工作,所以我编写了另一个正则表达式来执行,以防第一个返回空结果。我知道这很尴尬!如何将以下内容合并到一个简单的正则表达式中? :
//Get the H1 title
function get_tag( $attr, $value, $xml )
{
$attr = preg_quote($attr);
$value = preg_quote($value);
$tag_regex2 = '/<h1>(.*?)<\\/h1>/si';
$tag_regex = '/<h1><span itemprop="itemreviewed">(.*?)<\\/span><\\/h1>/si';
preg_match($tag_regex,
$xml,
$matches);
if ($matches[1] == ""){
preg_match($tag_regex2,
$xml,
$matches);
};
return $matches[1];
}
最佳答案
如果您愿意为了方便而牺牲稳健性(如果您使用正则表达式来解析 HTML,则必须这样做:)),您可以使用
$tag_regex = '#<h1>(?:<span itemprop="itemreviewed">)?(.*?)(?:</span>)?</h1>#si';
关于php - 组合两个正则表达式函数来剥离 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17148845/