我在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
答案 0 :(得分:2)
没有特别的原因,它是一种语法选择。这种语法可以方便地为模式添加全局修饰符:
delimiter - pattern - delimiter - [global modifiers]
如错误消息和php手册中所述,您可以选择特殊字符之间的分隔符,最常用的是斜杠,但它并不总是一个相关的选择,特别是当模式包含很多需要转义的字面斜线。
答案 1 :(得分:1)
这是因为您还可以将开关应用于正则表达式(例如,m
表示多行,u
表示Unicode),这些需要在分隔符之外定义,因此语法是
opening delimiter expression closing delimiter [optional switches]
e.g。
/^[a-z]*$/mi
表示多行(m
)和不区分大小写(i
)的切换,使用/
的分隔符
分隔符不能是可以被正则表达式解析器误解的字符,它必须非常清楚它是分隔符,因此它不能是alpha(例如i
或\
用于"转义"正则表达式中的字符
请注意,您还可以使用大括号作为分隔符,所以
[^[a-z]*$]mi
有效