目前使用以下字符串作为我的模式。 (警告:preg_match():未知修饰符' 0')
$between = preg_match("(.*)".$check."(.*)", _allbetween($coords1, $coords2));
我做错了什么?
以前从未在php中使用正则表达式,请原谅这个非常简单的问题。
答案 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));
$check
是一个...)