php - 组合两个正则表达式函数来剥离 html 标签

标签 php regex

我试图在 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/

相关文章:

php - 与被识别为构造函数的类同名的小写方法

regex - fnr.exe 正则表达式捕获组输出

php - 使用 php preg_match_all 和 cURL 从多个页面抓取/下载图像

php - 使用curl时发生SSL写入错误

php - 登录PHP和Mysql

php - Preg_match_all 和 javascript 数组

ios - 无法使用 Swift 对 UITextField 上的对象进行正则表达式匹配

regex - 如何在 Bash shell 中使用 GNU sed 只获取带有单引号的行?

python - 使用正则表达式从 HTML 中提取所有值

php - 通过php我如何关闭由php ssh2_connect创建的事件ssh连接?