PHP:为什么preg_match()中的模式字符串用斜杠括起来?

时间:2015-02-03 11:40:41

标签: php regex preg-match

为什么在php preg_match()函数中用正斜杠括起来的模式字符串?由于某些历史原因或部分php语法,它只是一个约定吗?

1 个答案:

答案 0 :(得分:1)

这是惯例。在许多语言(Javascript,Perl,...)中,斜杠是用于定义正则表达式的语言构造。

在PHP中,模式始终是一个字符串,但它包含两个部分。表达式本身和修饰语。斜杠将表达式括起来将它们与修饰符分开。允许使用任何非字母数字字符作为表达式的分隔符。您可能会看到^~#@或其他人。

DELIMITER EXPRESSION DELIMITER MODIFIERS
    /         .*         /         x

也可以使用括号。与其他字符不同,它们仍然可以在表达式中以相同的方式使用。

DELIMITER EXPRESSION DELIMITER MODIFIERS
    (         .*         )         x

我建议使用()作为分隔符,因为它反映了匹配数组。

preg_match('(.(.*))', 'FOO', $matches);
var_dump($matches);

输出:

array(2) {
  [0]=>
  string(3) "FOO"
  [1]=>
  string(2) "OO"
}