我有一个正则表达式,它查看 HTML 文件并根据它们是否匹配我传入的正则表达式来查找元素。确定元素是否匹配的一个主要因素是 id 是什么。id 必须是我决定使用的一些特殊字符。问题是,我知道有些人在用 HTML 编写 id 时会使用双引号或单引号。我希望能够抓住任何一种情况。所以我的正则表达式是这样的:
preg_match('@(<)([^\s]*).*(id)\s*=\s*["|\']{{ALViewElement_'.$viewElement.'}}["|\'][^/]*?(>)@i', $viewFile, $elementMatches, PREG_OFFSET_CAPTURE)
靠近中间你会看到我在哪里id
。在等号之后我有["|\']
,然后在最后我有同样的东西作为结束报价。
如果我的 html 看起来像这样,我会得到一个匹配项:
<section id="{{ALViewElement_resume}}" data-test="testing" >
<!--{{RESUME_ADD_CHANGE_PIECE}}-->
<!--{{RESUME}}-->
</section>
但是,如果我改用单引号,则不匹配:
<section id='{{ALViewElement_resume}}' data-test="testing" >
<!--{{RESUME_ADD_CHANGE_PIECE}}-->
<!--{{RESUME}}-->
</section>
我似乎无法弄清楚我的正则表达式有什么问题,它不会拾取单引号。有任何想法吗?