preg_match():未知的修饰符

时间:2014-01-22 23:22:29

标签: php regex

目前使用以下字符串作为我的模式。 (警告:preg_match():未知修饰符' 0')

$between = preg_match("(.*)".$check."(.*)", _allbetween($coords1, $coords2));

我做错了什么?

以前从未在php中使用正则表达式,请原谅这个非常简单的问题。

2 个答案:

答案 0 :(得分:2)

如果$ check包含文字字符串,则必须在模式中添加分隔符并使用preg_quote:

preg_match("/(.*)".preg_quote($check)."(.*)/", _allbetween($coords1, $coords2));

请注意,preg_match返回1或0(true或false),而不是匹配结果(请参阅php manual

答案 1 :(得分:1)

PHP中的正则表达式必须用一对字符包围,这些字符在正则表达式本身中不会出现(如果使用反斜杠转义它们)。

您使用的字符是通过第一个字符定义的 - 在您的情况下为(。但是一个括号在regexp中已经具有特殊含义。

您应该使用最常见的分隔符/(斜杠)括起您的正则表达式,如:

$between = preg_match( sprintf( '/(.*)%s(.*)/', preg_quote( $check ) ), _allbetween($coords1, $coords2));