为什么在 PHP 的 preg_match 函数中使用反斜杠?
Why are backslashes used in preg_match function of PHP?
我一直在练习PHP中的preg_match()
功能。教程说需要在字符前加正斜杠
我还注意到,如果没有斜杠,它的效果会很奇怪。它给出警告:
preg_match(): Delimiter must not be alphanumeric or backslash.
问:前斜线有什么区别?
代码如下:
$string = 'Okay, I\'m fine with it! ';
$math = 'Okay'; // I need to add fore slashes for it to work
echo preg_match($math, $string); // It supposedly echoes out 1 or 0
// depending if the former argument
// is in the latter argument
这是因为您还可以将开关应用到正则表达式(例如,m
用于多行,u
用于 Unicode)并且这些需要在定界符之外定义,所以语法是
opening delimiter expression closing delimiter [optional switches]
例如
/^[a-z]*$/mi
对于多行 (m
) 和不区分大小写 (i
) 的开关,使用分隔符 /
定界符不能是正则表达式解析器可能会误解的字符,必须非常清楚它是定界符,所以不能是字母(例如 i
,或 \
用于 "escape" 正则表达式中的字符
请注意,您也可以使用大括号作为分隔符,因此
[^[a-z]*$]mi
有效
没有特别的原因,这是一种语法选择。此语法的优点是可以方便地向模式添加全局修饰符:
delimiter - pattern - delimiter - [global modifiers]
如错误消息和 php 手册中所述,您可以选择特殊字符之间的分隔符,最常用的是斜杠,但并不总是合适的选择,尤其是当模式包含大量需要转义的文字斜线。
我一直在练习PHP中的preg_match()
功能。教程说需要在字符前加正斜杠
我还注意到,如果没有斜杠,它的效果会很奇怪。它给出警告:
preg_match(): Delimiter must not be alphanumeric or backslash.
问:前斜线有什么区别?
代码如下:
$string = 'Okay, I\'m fine with it! ';
$math = 'Okay'; // I need to add fore slashes for it to work
echo preg_match($math, $string); // It supposedly echoes out 1 or 0
// depending if the former argument
// is in the latter argument
这是因为您还可以将开关应用到正则表达式(例如,m
用于多行,u
用于 Unicode)并且这些需要在定界符之外定义,所以语法是
opening delimiter expression closing delimiter [optional switches]
例如
/^[a-z]*$/mi
对于多行 (m
) 和不区分大小写 (i
) 的开关,使用分隔符 /
定界符不能是正则表达式解析器可能会误解的字符,必须非常清楚它是定界符,所以不能是字母(例如 i
,或 \
用于 "escape" 正则表达式中的字符
请注意,您也可以使用大括号作为分隔符,因此
[^[a-z]*$]mi
有效
没有特别的原因,这是一种语法选择。此语法的优点是可以方便地向模式添加全局修饰符:
delimiter - pattern - delimiter - [global modifiers]
如错误消息和 php 手册中所述,您可以选择特殊字符之间的分隔符,最常用的是斜杠,但并不总是合适的选择,尤其是当模式包含大量需要转义的文字斜线。