要捕获偏移,可以设置
PREG_OFFSET_CAPTURE
旗帜。
http://php.net/manual/en/function.preg-match.php
preg_match ($regex, $subject, $matches, PREG_OFFSET_CAPTURE);
您可以自己运行以下脚本并查看结果:
$regex = '~({(\w+)})+~';
$str = 'asdfasdf 1243#$*#{A_123}asdf?{432U}';
preg_match_all($regex, $str, $m, PREG_OFFSET_CAPTURE);
$tags = $m[1];
echo '<pre>';
print_r($tags); // prints tags and their offsets
echo '</pre>';
关于模式:
-
\w
是等同于以下字符类的转义序列:
[a-zA-Z0-9_]
-
圆括号
(...)
用于分组,它们还创建backreference。
-
这个
+
是表示前一个模式的“一个或多个”的量词
关于regex的一个好资源:
http://www.regular-expressions.info