PHP:为什么 preg_match() 中的模式字符串用斜杠括起来?
PHP: Why is the pattern string in preg_match() enclosed in slashes?
为什么 php preg_match() 函数中的模式字符串用正斜杠括起来?由于某些历史原因或 php 语法的一部分,这只是一种约定吗?
这是惯例。在许多语言(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"
}
为什么 php preg_match() 函数中的模式字符串用正斜杠括起来?由于某些历史原因或 php 语法的一部分,这只是一种约定吗?
这是惯例。在许多语言(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"
}