if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $input,$oper)){
$oprator = $oper[0];
}
这是我的代码。我可以得到加号,减号,乘法而不是除以一个字符。如何更新此preg_match以查找string是否包含divide? p>
例如,如果我的字符串是8/2,那么oprator变量应该得到/
答案 0 :(得分:1)
你需要按如下方式逃避它:
if (preg_match('/[\/\'^£$%&*()}{@#~?><>,|=_+¬-]/', '5/8',$oper)){
// ^^
$oprator = $oper[0];
echo $oprator;
}
或者您也可以使用其他delimiter from this list
答案 1 :(得分:0)
技巧:你可以隐藏你必须在角色范围内逃脱的角色(但并非总是可能)。在您的情况下,如果您选择圆括号作为分隔符,则可以执行此操作:
if ( preg_match('([#--/<-@^_{-~£¬])u', '5/8', $oper) )
范围:
#--
包含# $ % & ' ( ) * + , -
<-@
包含< = > ? @
{-~
包含{ | } ~
(参见ASCII表)
此外,当您处理包含£
或¬
等字符的多字节字符串时,请使用u修饰符,否则字符串和模式将被视为分隔字节,您可能会遇到意外结果,例如:
var_dump( preg_match("([¬])","¯") );
返回int(1)
,因为¬
在两个字节C2 AC
上的¯
和C2 AF
上编码。没有u修饰符,C2
匹配。
var_dump( preg_match("([¬])u","¯") );
按预期返回int(0)
。