Php 从html文件中通过preg_匹配获取2个元素

Php 从html文件中通过preg_匹配获取2个元素,php,regex,preg-match,Php,Regex,Preg Match,无法理解它是如何工作的preg_match,今天花了几个小时创建了我的函数,并提供了很多示例,甚至文档,但都没有帮助我。所以我需要你的帮助 需要得到2个元素 第一个是元素名菜单,第二个是标记{main}之间的内容 看起来像 {main item=menu} bla bla bla{/main} 一个简单的正则表达式应该是/\{([a-z]+)\s*项=([a-z]+)\}(.*)\{\/\1\}/。应用于您的示例,这将返回匹配的组main,菜单和bla-bla-bla if (preg_mat

无法理解它是如何工作的preg_match,今天花了几个小时创建了我的函数,并提供了很多示例,甚至文档,但都没有帮助我。所以我需要你的帮助

需要得到2个元素

第一个是元素名菜单,第二个是标记{main}之间的内容 看起来像

{main item=menu} bla bla bla{/main}

一个简单的正则表达式应该是
/\{([a-z]+)\s*项=([a-z]+)\}(.*)\{\/\1\}/
。应用于您的示例,这将返回匹配的组
main
菜单
bla-bla-bla

if (preg_match('/\{([a-z]+)\s*item=([a-z]+)\}(.*?)\{\/\1\}/', $data, $m)) {
    if ($m[2] == 'menu') {
        // do something usefull..
        $content = $m[3];
    }
}

您甚至可以使用
preg\u match\u all
,对所有元素进行迭代,以匹配此模式。

如果您展示您所尝试的内容,可能会对您更有用。通过这种方式,我们可以解释您的实现是否有问题。'/{loop item=([a-z]+)\}(.*){\/loop}/s'正在工作,谢谢