我试图在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];
}
答案 0 :(得分:3)
如果您愿意为了方便而牺牲稳健性(如果您使用正则表达式来解析HTML,则必须这样做)),您可以使用
$tag_regex = '#<h1>(?:<span itemprop="itemreviewed">)?(.*?)(?:</span>)?</h1>#si';
答案 1 :(得分:1)
/<h1>(?:<[^>]+>)?(.*?)(?:<[^>]+>)?<\/h1>/si
一般用于移除<h1/>
中的标记,但您可能希望稍微自定义它。如果您想要删除上面列出的span
,则会看起来像/<h1>(?:<span\s+itemprop=["']itemreviewed["'][^>]*>)?(.*?)(?:<[^>]+>)?<\/h1>/si
。查看RegularExpressions.info以获得很好的参考。