Php 组合两个正则表达式函数来剥离html标记
我试图在html页面中获取H1文本。我使用了一个正则表达式,它工作得很好,直到我们开始在一些页面上使用微格式。为了简单起见,我使用了页面的标题(H1标记作为“正在审阅的项目”) 问题是,我之前使用的正则表达式停止工作,因此我编写了另一个正则表达式,以防第一个正则表达式返回空结果。我知道这非常糟糕!!!如何将以下内容合并到一个简单的正则表达式中?:Php 组合两个正则表达式函数来剥离html标记,php,regex,Php,Regex,我试图在html页面中获取H1文本。我使用了一个正则表达式,它工作得很好,直到我们开始在一些页面上使用微格式。为了简单起见,我使用了页面的标题(H1标记作为“正在审阅的项目”) 问题是,我之前使用的正则表达式停止工作,因此我编写了另一个正则表达式,以防第一个正则表达式返回空结果。我知道这非常糟糕!!!如何将以下内容合并到一个简单的正则表达式中?: //Get the H1 title function get_tag( $attr, $value, $xml ) { $attr = pre
//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];
}
//获取H1标题
函数get_标记($attr,$value,$xml)
{
$attr=预报价($attr);
$value=预报价($value);
$tag_regex2='/(.*?)/si';
$tag_regex='/(.*?)/si';
preg_match($tag_regex,
$xml,
元);;
如果($matches[1]==“”){
预匹配($tag\u regex2,
$xml,
元);;
};
返回$matches[1];
}
如果您愿意为了方便而牺牲健壮性(如果您使用正则表达式解析HTML:),您可以使用
$tag_regex = '#<h1>(?:<span itemprop="itemreviewed">)?(.*?)(?:</span>)?</h1>#si';
$tag_regex='#(?:)?(.*?)?#si';
如果您愿意为了方便而牺牲健壮性(如果您使用正则表达式解析HTML:),您可以使用
$tag_regex = '#<h1>(?:<span itemprop="itemreviewed">)?(.*?)(?:</span>)?</h1>#si';
$tag_regex='#(?:)?(.*?)?#si';
/(?:]+>)(.*?(:::++>)?/si
通常用于删除
中的标记,但您可能需要对其进行一点自定义。如果您特别想删除上面列出的span
,它看起来类似于/(?:/(?:]+>)((?:])(?:)(*)?/si
通常用于删除
中的标记,但您可能需要对其进行一些自定义。如果您想删除上面列出的span
,它看起来会像/(?:现在是2013年。别再试图用正则表达式解析HTML了。@Alex:我已经站在你的立场上了。相信我,在所有人都否决之前,把这个拿下来。如果我需要一个快速修复方法,如果我只使用一次,我仍然使用这个:DBTW,如果我们说“不要使用正则表达式”,我们应该给他一些想法。例如,你可以使用DOM解析器(比如简单的PHP DOM解析器)为了解决你的问题。为什么strip_标记
不起作用?现在是2013年。停止尝试用正则表达式解析HTML。@亚历克斯:我已经站在你的立场上了。相信我,在所有人都否决之前把这个拿下来。如果我需要一个快速修复方法,如果我只使用一次,我仍然使用这个:DBTW,如果我们说“不要使用正则表达式”,我们应该给他一些想法。例如,你可以使用DOM解析器(比如简单的PHP DOM解析器)为了解决你的问题。为什么strip_tags
不起作用?你。我喜欢你。你处理这些事情的方式比大多数人都好。你。我喜欢你。你处理这些事情的方式比大多数人都好。很好,谢谢,我可以用它来处理其他事情!好吧,我明白解析HTML不是最好的主意!很好,谢谢,我可以用它来处理其他事情!好,所以我明白解析HTML不是最好的主意!