正则表达式匹配{@layout=xxx}

问题描述 投票:0回答:2
php html regex templates
2个回答
1
投票

您需要使用

preg_match_all
来获取同一字符串中的多个匹配项。在这种情况下,您想要检查
$matches[1]
,它将是捕获组结果的数组。如果您有多个布局,那么它将有多个元素,因此如果是这种情况,您就知道有多个布局声明。

我还将您的正则表达式更改为

/\{\@layout=([a-z]+)\}/
,它将仅捕获布局名称。
$matches
看起来像:

array(2) {
  [0]=>
  array(1) {
    [0]=>
    string(20) "{@layout=layoutname}"
  }
  [1]=>
  array(1) {
    [0]=>
    string(10) "layoutname"
  }
}

因此,如果

count($matches[1]) > 1
,您就知道有多个布局声明。否则,
$matches[1][0]
是您的布局名称。


0
投票

感谢@SebastianProske,我找到了我正在寻找的东西:

if (preg_match_all('/\{\@layout=([a-zA-Z0-9]+)*\}/', $string, $matches)) {

这是正确的 if,它还返回名称和所有匹配项。

© www.soinside.com 2019 - 2024. All rights reserved.