Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 组合两个正则表达式函数来剥离html标记_Php_Regex - Fatal编程技术网

Php 组合两个正则表达式函数来剥离html标记

Php 组合两个正则表达式函数来剥离html标记,php,regex,Php,Regex,我试图在html页面中获取H1文本。我使用了一个正则表达式,它工作得很好,直到我们开始在一些页面上使用微格式。为了简单起见,我使用了页面的标题(H1标记作为“正在审阅的项目”) 问题是,我之前使用的正则表达式停止工作,因此我编写了另一个正则表达式,以防第一个正则表达式返回空结果。我知道这非常糟糕!!!如何将以下内容合并到一个简单的正则表达式中?: //Get the H1 title function get_tag( $attr, $value, $xml ) { $attr = pre

我试图在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];
}
//获取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不是最好的主意!