1

我正在使用 php,需要找到下面定义的通配符字符串。然后我需要在通配符值的末尾附加一个字符串。

值为 "awn.Funnel.Widget.createForm("awn.co.uk", "--wildcard--here--")

这是我尝试过的:

if (preg_match('/awn.Funnel.Widget.createForm("awn.co.uk",[_a-zA-Z]+/', $competition_code, $matches)) { print_r ($matches); }

但它给了我:

Warning: preg_match(): Compilation failed: missing ) at offset 52
4

2 回答 2

2

你的正则表达式:

'/awn.Funnel.Widget.createForm("awn.co.uk",[_a-zA-Z]+/'

应改写为:

'/awn\.Funnel\.Widget\.createForm\("awn\.co\.uk",[_a-zA-Z]+/'

或者更好地使用preg_quote 函数

$regex = '/' . preg_quote('awn.Funnel.Widget.createForm("awn.co.uk', '/') 
         . '[_a-zA-Z]+/';
于 2013-04-02T16:57:16.110 回答
1

preg_match 的第一个参数:

'/awn.Funnel.Widget.createForm("awn.co.uk",[_a-zA-Z]+/'

是一个正则表达式模式。因此,字符 ' (' 被解释为捕获组的开始。由于这不是您想要的,因此您需要转义括号:

'/awn.Funnel.Widget.createForm\("awn.co.uk",[_a-zA-Z]+/'

您还应该转义 ' .',因为如果没有转义,它们将被解释为任何字符,而不是句号。

于 2013-04-02T16:55:33.263 回答