Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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与站点PHP的正则表达式问题_Php_Regex_Html Parsing - Fatal编程技术网

PHP与站点PHP的正则表达式问题

PHP与站点PHP的正则表达式问题,php,regex,html-parsing,Php,Regex,Html Parsing,我有一个php,看起来像这样: (?i)<(.*?)((?P<QUALIFY>title|))(.*?)>(.*?)(?P<MATCH>(South Beach))(.*?)<\/.*?> (?i)(*P(南滩))(* 从那以后,我希望它能正常工作 Bla南部海滩 返回 资格:头衔 比赛:南海滩 及 blablabla南部海滩 不返回任何内容 这是在regex101上测试时发生的 但是,当这包含在实时站点的网站代码中时 布拉布拉布

我有一个php,看起来像这样:

(?i)<(.*?)((?P<QUALIFY>title|))(.*?)>(.*?)(?P<MATCH>(South Beach))(.*?)<\/.*?>
(?i)(*P(南滩))(*
从那以后,我希望它能正常工作

  • Bla南部海滩
返回

  • 资格:头衔
  • 比赛:南海滩

  • blablabla南部海滩
不返回任何内容

这是在regex101上测试时发生的

但是,当这包含在实时站点的网站代码中时

  • 布拉布拉布拉南部海滩
返回

  • 资格:头衔
  • 比赛:南海滩
是的,我知道,不要用正则表达式解析HTML。除此之外还有什么想法吗?我的其他测试正则表达式工作得很好,也许我遗漏了什么


更新。进一步检查后发现,在现场解析之前,我们删除了
/n
/t
。所以所有的
和其他
组合在一起。是否有办法更改正则表达式>基本上,我正在寻找
ba bla South Beach
或div标签,例如
bla bla South Beach


更新2以澄清第一条评论:

这是一场正确的比赛,换句话说,我正在寻找

我确实将数组的标题部分更新为

  • ]*)(标题)([^>]*)>
但这也没用

我基本上是在尝试匹配这两种情况


  • 您的表达式过于复杂,请尝试以下操作:

    <(title)>(.*?South Beach.*?)<\/\1>
    
    (*?南部海滩。*?)
    


    备选版本:

    <(\S*).*?(title).*?>(.*?South Beach.*?)<\/(\1|\2)>
    
    (*?南部海滩。*?)
    

    很难理解您的问题。既然你说某个
    在regex101中运行,你能发布一个链接来更好地了解你在做什么吗?当然对不起:匹配正确吗。根据更新的进一步研究,结果表明,这是删除线返回,如图所示。基本上,这是我的正则表达式,我在上一个正则表达式之前的末尾收集通配符,这与我最初使用的相似,但我试图解释其他标题标记,除了例如,类似于我如何设置
    South Beach
    部分,您可以将
    *?
    放置在前标记的两侧,以适应变化。我会帮你编辑的。谢谢你,这很有意义。好奇为什么我做了\1\3我没有得到1-3个匹配项?
    \N
    其中
    N
    是一个数字,这只是一种反向引用捕获组的方法。如果捕获组为空,它可能不会显示任何内容。