确定preg_match发生的位置

时间:2012-01-01 03:37:25

标签: php regex

如何运行正则表达式/\Wtop\W/并确定匹配发生的位置或非字母数字(\ W)字符是什么?

我知道我可能想做点像......

if (preg_match('/\Wtop\W/', $string)) {
  ...

但我仍然坚持如何识别\ W匹配的内容或匹配发生的位置。

2 个答案:

答案 0 :(得分:3)

请参阅PHP Docs。这是你应该做的:

preg_match('/(\W)top\W/', $string, $matches, PREG_OFFSET_CAPTURE);
$position = $matches[1][1];

以下是演示:http://www.ideone.com/vzSwI

答案 1 :(得分:1)

使用PREG_OFFSET_CAPTURE标志获取匹配的位置。

\W括在括号中,捕获结果(添加$match之类的空变量),然后获取第一个$match[1]的{​​{1}}和{{1}第二个。