混合preg_match,锚点和偏移量

时间:2014-12-17 00:23:19

标签: php regex preg-match

我有$string = "hello world, world!";,我只需匹配第一个 world,所以我也有偏移量。它从第6个角色开始。 preg_match()有五个参数:string pattern ,string subject ,引用数组匹配,int flags和int offset

我的模式是:$pattern = "/^world/";

如果我做preg_match($pattern, $string, $string_match, 0, 6),基本上我希望这是有效的,因为“锚”将检查我的字符串的第6个字母,因为我设置了偏移量。 但不是!它不起作用。哦!

一个简单的修复,而不是我设置preg_match()函数的偏移量,我使用substr()而不是$string,就像它:{{1} }。

是否可以修复我的第一个代码以正确使用带preg_match($pattern, substr($string, 6), $string_match)偏移量的锚点?或者它是唯一的解决方案?

1 个答案:

答案 0 :(得分:3)

你正在使用错误的锚点;要使用偏移量,你需要\G,最后一个匹配位置锚点

$string = 'hello world, world!';

var_dump(preg_match('/\Gworld/', $string, $matches, 0, 6)); // int(1)

有趣的是,documentation表示不支持\G,但从4.3.3开始,它肯定是supported